TreeTaggerを使った英語の形態素解析
課題で英語の形態素解析をする必要があったのでツール・インストール・Pythonからの利用についてメモ。
日本語だとMeCabを使えばいいのですが。
Pythonで形態素解析 - よしなしごと
英語だとTreeTaggerというツールがあるということです。Windows・Linux・Macいずれの環境でも利用できます。
TreeTagger
英語だけではなくて、ドイツ語・スペイン語・フランス語やスワヒリ語なんかにも対応しているようです。対応している言語の一覧
オンラインで使えるツールも日本人研究者の方が作られていました。
TreeTagger Online
英文をいれてsubmitすると、結果のテキストが得られます。
インストール
公式サイトどおりの手順でインストールできました。
TreeTaggerのDownloadの項目から必要なファイルをダウンロード。以下のファイルです。
これらのファイルを任意の同一ディレクトリに保存します(とくに解凍などする必要はありません)。その後、OSのコマンドラインから保存したディレクトリに移動して、以下のコマンドを実行。
sh install-tagger.sh
これでインストール完了です。
echo "Hello world"|cmd/tree-tagger-english
とすると
Hello UH Hello world NN world
のようなタブ区切りのデータが得られます。
左から入力した単語、品詞、入力した単語の原形となっています。
品詞は省略形で分かりにくいですが、こちらのページで訳してくださっています。
PythonからTreeTaggerを使う
どうせならPythonから使いたいので、ラッパーを探します。
公式ページのリンクにPythonラッパーへのリンクがあるのですが、いまいち動きません。
プログラミングなどのコミュニティサイトであるStack Overflowを調べていると同じような質問がありました。
python - AttributeError: 'module' object has no attribute 'TreeTagger' - Stack Overflow
この回答にしたがって、
http://cental.fltr.ucl.ac.be/team/~panchenko/def/treetaggerwrapper.py
からソースをダウンロードして、Pythonのライブラリ用のディレクトリに保存すると無事Pythonから利用することができました。
import treetaggerwrapper tagger = treetaggerwrapper.TreeTagger(TAGLANG='en',TAGDIR='…/treetagger')#TAGDIRにはTreeTaggerをインストールしたディレクトリを指定。 tags = tagger.TagText("Save the time of the reader.")#解析したいテキストを引数に for tag in tags: print tag #以下、出力 Save VV save the DT the time NN time of IN of the DT the reader NN reader . SENT .
これで名詞だけ抜き出したり、ある名詞と共起しやすい形容詞とかの抽出とかに使おうかと。