前回の記事では、入力された英文を Python + TreeTagger で処理して、原形の情報を得ました。その過程で、入力された単語(そのままの形)と品詞の情報も得られますので、今回はそれらを使って、品詞アノテーションをします。
イメージとしては:
入力:"He has lots of books."
↓↓↓
出力:He_PP has_VHZ lots_NNS of_IN books_NNS ._SENT
それぞれの単語の後ろに、アンダーバー(_)と、品詞情報(PP, VHZなど)がくっついています。このように品詞情報を付与してコーパスを作成すると、より高度な検索などがしやすくなるようです。
# ttw として treetaggerwrapper をインポート | |
import treetaggerwrapper as ttw | |
# 初期設定 | |
taglang = "en" #英語 | |
tagdir = "/Users/*****************/TreeTagger" #TreeTagger関連ファイルのあるディレクトリ | |
tagger = ttw.TreeTagger(TAGLANG=taglang, TAGDIR=tagdir) | |
# 処理をする文を指定 | |
line = "He has lots of books, and I have as many books." | |
# treetaggerによる処理 | |
tags = tagger.TagText(line) | |
# 元の形(raw_word) と 品詞(POS) のみをリスト("ori_words")に格納 | |
ori_words = [] | |
for tag in tags: | |
raw_word, POS, ori_word = tag.split("\t") | |
ori_words.append(raw_word + "_" + POS) | |
line_tagged = " ".join(ori_words) | |
# 表示してチェックしてみる | |
print(line_tagged) |
line に入っている文が処理されますので、ダブルクオーテーションマークの中の文を分析したい文に変えてください。また、input() やコマンドライン引数を使うことで、より簡単に扱うこともできそうです。
なお、POS (品詞) がそれぞれどういう意味であるかは、TreeTaggerのページにある "tagset documentation" をクリックすることで確認することができます。
関連