前回の記事では、入力された英文を Python + TreeTagger で処理して、原形の情報を得ました。その過程で、入力された単語(そのままの形)と品詞の情報も得られますので、今回はそれらを使って、品詞アノテーションをします。
イメージとしては:
入力:"He has lots of books."
↓↓↓
出力:He_PP has_VHZ lots_NNS of_IN books_NNS ._SENT
それぞれの単語の後ろに、アンダーバー(_)と、品詞情報(PP, VHZなど)がくっついています。このように品詞情報を付与してコーパスを作成すると、より高度な検索などがしやすくなるようです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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" をクリックすることで確認することができます。
関連
0 件のコメント:
コメントを投稿