Python によるワードネットレマタイズと pos タグ付け
2023-12-05 05:36:56
質問
pythonでwordnet lemmatizerを使いたいのですが、デフォルトのposタグはNOUNで、posタグが明示的にVERBとして指定されない限り、動詞に対する正しいレンマを出力しないことを学びました。
私の質問は、上記のlemmatizationを正確に実行するためのベストショットとは何ですか?
私は、posタグ付けを
nltk.pos_tag
でposタグを付けましたが、ツリーバンクのposタグをワードネット互換のposタグに統合するのに迷っています。よろしくお願いします。
from nltk.stem.wordnet import WordNetLemmatizer
lmtzr = WordNetLemmatizer()
tagged = nltk.pos_tag(tokens)
NN,JJ,VB,RBというタグが出力されます。これらをワードネット互換のタグに変更するにはどうしたらよいでしょうか?
また
nltk.pos_tag()
をタグ付きコーパスで学習させる必要があるのでしょうか?
どのように解決するのですか?
まず最初に
nltk.pos_tag()
を学習させることなく直接使用することができます。
この関数は、事前に学習されたタグ付け器をファイルから読み込みます。ファイル名には
と共に
nltk.tag._POS_TAGGER
:
nltk.tag._POS_TAGGER
>>> 'taggers/maxent_treebank_pos_tagger/english.pickle'
Treebankコーパスで学習させたので、このコーパスにも ツリーバンクタグセット .
次の関数は、TreebankのタグをWordNetの品詞名にマッピングします。
from nltk.corpus import wordnet
def get_wordnet_pos(treebank_tag):
if treebank_tag.startswith('J'):
return wordnet.ADJ
elif treebank_tag.startswith('V'):
return wordnet.VERB
elif treebank_tag.startswith('N'):
return wordnet.NOUN
elif treebank_tag.startswith('R'):
return wordnet.ADV
else:
return ''
そして、その返り値をレムマタイザで利用することができます。
from nltk.stem.wordnet import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('going', wordnet.VERB)
>>> 'go'
レンマタイザーに渡す前に戻り値をチェックします。空文字列だと
KeyError
.
関連
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] バブルソートの宿題
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?