tree-tagger のインストール
ubuntuのpythonでtree-taggerを使うときに結構手こずったのでメモします。
ubuntuのpythonで英語の形態素解析ツールであるtree-taggerを使おうとしたのですが、調べたとおりででてこなかったので書きます。
まず必要なものとして以下のものを公式サイトからダウンロードします。
Download the tagger package for your system (PC-Linux, Mac OS-X, ARM-Linux).
Download the tagging scripts into the same directory.
Download the installation script install-tagger.sh.
Download the parameter files for the languages you want to process.
それらをインストールする場所に移動します。どこでもいいですが、/usr/local/src内に作ったフォルダ(筆者の場合はtreetagger)でよいかと。
(~/download) > $ mv tree-tagger-linux-3.2.1.tar.gz tagger-scripts.tar.gz install-tagger.sh english-par-linux-3.2-utf8.bin.gz /usr/local/src/treetagger (~) > $ cd /usr/local/src/treetagger (/usr/local/src/treetagger) > $ #そしたらインストールします。 (/usr/local/src/treetagger) > $ sudo sh install-tagger.sh TreeTagger version for PC-Linux installed. Tagging scripts installed. English parameter file (UTF8) installed. Path variables modified in tagging scripts. You might want to add /usr/local/bin/tree_tagger/cmd and /usr/local/bin/tree_tagger/bin to the PATH variable so that you do not need to specify the full path to run the tagging scripts. (/usr/local/src/treetagger) > $ echo 'Hello world!' | sudo cmd/tree-tagger-english reading parameters ... tagging ... finished. Hello UH hello world NN world ! SENT !
次にpythonで使えるようにします。
いろいろなサイトを見てるとちゃちゃとやっていますが、筆者の環境ではうまくいきませんでいた。
まずは、pipからです。
(~) > $ pip install treetaggerwrapper
で、pythonのコード
以下のは基本のものらしい
import treetaggerwrapper tagger = treetaggerwrapper.TreeTagger(TAGLANG='en') tags = tagger.TagText('hello world')
ただこれだとうごきませんでした。まず、TAGDIRを指定しろと言われます。
これにはshでインストールしたものにPATHを通します。
... export PATH="/usr/local/bin/treetagger/bin:$PATH"
これで動くかと思い上のtreesample.pyを実行しますがまだ動きません。
こんどはenglish-utf8.parがないよと言われます。
これは/usr/local/bin/treetagger/にあるenglish-par-linux-3.2-utf8.bin.gzのことです。
(/usr/local/src/treetagger) > $ sudo gzip -d english-par-linux-3.2-utf8.bin.gz (/usr/local/src/treetagger) > $ sudo mv english-par-linux-3.2-utf8.bin english-utf8.par
これを先ほどのtreesample.pyで指定してあげます。
import treetaggerwrapper tagger = treetaggerwrapper.TreeTagger(TAGLANG='en' TAGPARFILE='/usr/local/bin/treetagger/english-utf8.par') tags = tagger.TagText('hello world') print(tags)
実行します。
(~) $ python treesample ['hello\tNN\thello', 'world\tNN\tworld', '!\tSENT\t!']
動きました。どういうわけか環境によって結構変わるのかもしれませんね。