読者です 読者をやめる 読者になる 読者になる

TreeTaggerを使った英語の形態素解析

課題で英語の形態素解析をする必要があったのでツール・インストール・Pythonからの利用についてメモ。

日本語だとMeCabを使えばいいのですが。
Pythonで形態素解析 - よしなしごと

英語だとTreeTaggerというツールがあるということです。Windows・Linux・Macいずれの環境でも利用できます。
TreeTagger
英語だけではなくて、ドイツ語・スペイン語・フランス語やスワヒリ語なんかにも対応しているようです。対応している言語の一覧

オンラインで使えるツールも日本人研究者の方が作られていました。
TreeTagger Online
英文をいれてsubmitすると、結果のテキストが得られます。

インストール

公式サイトどおりの手順でインストールできました。
TreeTaggerのDownloadの項目から必要なファイルをダウンロード。以下のファイルです。

  1. 自分の環境にあったパッケージファイル
  2. tagging scripts
  3. インストールのためのシェルスクリプト(install-tagger.sh)
  4. 形態素解析したい言語のパラメータファイル

これらのファイルを任意の同一ディレクトリに保存します(とくに解凍などする必要はありません)。その後、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	.

これで名詞だけ抜き出したり、ある名詞と共起しやすい形容詞とかの抽出とかに使おうかと。