英語の文章からキーワードを抽出したくなったので
形態素解析ツールを探していた所、TreeTaggerというツールを見つけました。
英語の他にもフランス語、ドイツ語など色々などにも対応しているようです。
英語以外は解りませんので、英語をインストールしました。
インストールはここから、以下のファイル群を適当なディレクトリにダウンロードしてinstall-tagger.shを走らせます。ファイルの解凍含めて全て処理してくれます。
- tree-tagger-linux-3.2.tar.gz (本体)
- tagger-scripts.tar.gz (実行スクリプト)
- install-tagger.sh (インストーラ)
- english-par-linux-3.1.bin.gz (English parameter file)
- english-chunker-par-linux-3.1.bin.gz (English chunker parameter file)
インストーラを走らせた場所にbin, cmdが出来るのでその下にある実行ファイル群の
シンボリックリンクをパスが通っているところに張ります。
簡単な使い方以下のような感じです。標準入力かファイルから解析する文章を流します。
$ cat test.txt
When I was younger so much younger than today, I never needed anybody's help in anyway
$ tree-tagger-english < test.txt
reading parameters ...
tagging ...
When WRB when
I PP I
was VBD be
younger JJR young
so IN so
much RB much
younger JJR young
than IN than
today NN today
, , ,
I PP I
never RB never
needed VBD need
anybody NN anybody
's POS 's
help NN help
in IN in
anyway RB anyway
finished.2番目のカラムに出力されているコードが品詞を表しています。
正常に解析できてそうですね。あと3番目に単語の原形が出力されているのも、
結構嬉しい機能ですね。
品詞については以下に一覧を書きますが、詳しくはこのページを見て下さい。適当に訳したので間違えてたら教えて下さい。
CC Coordinating conjunction 等位接続詞 CD Cardinal number 基数 DT Determiner 限定詞 EX Existential there ? FW Foreign word 外国語 IN Preposition or subordinating conjunction 前置詞または従属接続詞 JJ Adjective 形容詞 JJR Adjective, comparative 比較形容詞 JJS Adjective, superlative 最上級形容詞 LS List item marker リスト項目のマーカー MD Modal 法 NN Noun, singular or mass 単数または不可算 NNS Noun, plural 名詞、複数形 NP Proper noun, singular 固有名詞、単数 NPS Proper noun, plural 固有名詞、複数 PDT Predeterminer 前決定詞 POS Possessive ending 所有格の終わり PP Personal pronoun 人称代名詞 PP$ Possessive pronoun 所有代名詞 RB Adverb 副詞 RBR Adverb, comparative 副詞、比較 RBS Adverb, superlative 副詞、最上級 RP Particle 不変化詞 SYM Symbol シンボル TO to 〜へ UH Interjection 間投詞 VB Verb, base form 動詞、原形 VBD Verb, past tense 動詞の過去時制 VBG Verb, gerund or present particle 動詞、動名詞または現在不変化詞 VBN Verb, past particle 動詞、過去の不変化詞 VBP Verb, non-3rd person singular present 動詞、非三人称単数現在 VBZ Verb, 3rd person singular present 動詞、三人称単数現在 WDT Wh-determiner Wh -限定詞 WP Wh-pronoun Wh -代名詞 WP$ Possessive wh-pronoun 所有関係代名詞 WRB Wh-adverb Wh -副詞
形態素解析にかけた結果を使って処理を行いたいのでスクリプトから使えないかと
探してみたところcpanにありました。さすがcpan。Alvis::Treetaggerというパッケージです。早速インストールして使ってみました。使い方は簡単で、reopenでTreeTaggerをforkしてからtagを呼ぶだけです。
#!/usr/bin/perl use strict; use warnings; use Alvis::Treetagger; # TreeTaggerをインストールしたディレクトリを設定 $Alvis::Treetagger::taggerRoot = '/usr/local/tree_tagger'; # よけいな出力はしない $Alvis::Treetagger::commandLine .= " -quiet"; my $text = "When I was younger so much younger than today, I never needed anybody's help in anyway"; Alvis::Treetagger::reopen; print &Alvis::Treetagger::tag($text); Alvis::Treetagger::shut;
これで英語の形態素解析ができるようになりました。ライブラリのおかげで簡単で使い勝手のよい武器だと思います。あとヨーロッパの言語には結構対応してるので、おいおい試してみようと思います。
参考リンク
http://tanaken.myhome.cx/~ktanaka/diary/?20080616
追記 (2009/5/3)
Alvis::Treetaggerを使ったサンプルで、最後にshutを呼び出さないと処理中に使用した
名前付きパイプがtmpディレクトリに残ってしまいます。本文中修正済みです。
関連する記事
タグ: perl, TreeTagger

