[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 !/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 !/usr/bin/python
 #!/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 #!/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS

>> 続き[[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

  これの続きは >> [[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 #!/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS

>> 続き[[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
>>[[ノート/テキストマイニング/oregano>ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6>ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

  これの続きは >> [[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]
  これの続きは >> [[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す>ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 #!/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS

>> 続き[[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]
>> 続き [[CaboChaで主節の骨組を取り出す>ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6]]
>>[[ノート/テキストマイニング/oregano>ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6>ノート/テキストマイニング/oregano6]]
[[ノート/テキストマイニング]]~
訪問者数 &counter();      最終更新 &lastmod();~

>>[[ノート/テキストマイニング/oregano>ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6>ノート/テキストマイニング/oregano6]]

2009-03-02 (月) 17:53:14    追記(Yamchaコンパイル時にエラー) 2010-10-13

  これの続きは >> [[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す>ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]

***CaboCha? (v 0.53) [#qb1cf81b]
CaboCha (Support Vector Machines に基づく日本語係り受け解析器) http://chasen.org/~taku/software/cabocha~
2005年ぐらいらしい(v0.53 ← UTF-8が不可)~

***CaboCha-0.60pre4 (UTF-8対応) [#x026c1bb]
新しいバージョン (0.60pre4 http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442)~
だとUTF-8対応という話あり。その代わりchasen対応があるのかないのか?~
~
必要な要素:~
  * YamCha 0.30以上 (必須) 要するにタガーらしい~
  * ChaSen (必須) 形態素解析器~
  * MeCab ChaSen の代用, ChaSen を用いない時は必要~
  * TinySVM (学習を行う場合は必須) Support Vector Machineのメカニズム~
  * C++ コンパイラ (g++ 2.95.1 以上で動作確認済み)

このv0.60だと、新たにCRF++というパッケージが必要ならしい。

準備1. TinySVM (サポートベクターマシンのソフト) http://chasen.org/~taku/software/TinySVM/~
ファイル http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

準備2. YamCha (http://chasen.org/~taku/software/YamCha/)をインストール。~
ファイル http://chasen.org/~taku/software/YamCha/src/yamcha-0.33.tar.gzをダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install
(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、YamChaコンパイル時に2箇所エラー
 yamcha-0.33/src/param.cpp 先頭部分に #include <cstring> を追加
 yamcha-0.33/libexec/mkdarts.cpp 先頭部分に #include <cstdlib> を追加
 make で成功

準備3. CRF++ (http://www.chasen.org/~taku/software/CRF++)をインストール。~
ファイル http://sourceforge.net/project/showfiles.php?group_id=192973&package_id=227302&release_id=612865)をダウンロード&解凍して、
 % ./configure 
 % make
 % make check
 % su
 # make install

CaboChaのインストール~
ファイル http://sourceforge.net/project/showfiles.php?group_id=212798&package_id=256723&release_id=626442 をダウンロード&解凍して、
 % ./configure --with-charset=UTF8 --with-posset=IPA
 % make
 % make check
 % su
 # make install

前にも言った([[ここ>ノート/テキストマイニング/oregano2]]、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

>(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の [[0.53:http://chasen.org/~taku/software/cabocha/src/cabocha-0.53.tar.gz]] で導入。CaboChaコンパイル時に1箇所エラー
 cabocha-0.53/src/param.cpp 先頭部分に #include <cstring> を追加
 make で成功

(2011-02-01 追記)上記Oreganoで、0.60pre4でのコンパイルエラーを修正。ldconfigで/usr/local/libにサーチパスを通した後、更にsrc/Makefile上でLIBSに -liconv を追加してmakeしたら、通った。

実行結果は
 $ cabocha
 太郎は次郎が持っている本を花子に渡した。
 <PERSON>太郎</PERSON>は---------D
   <PERSON>次郎</PERSON>が-D     |
                  持っている-D   |
                          本を---D
                          花子に-D
                          渡した。
 EOS
のように無事にインストール完了。

更に、pythonからのインターフェースをインストール。
ディレクトリpythonで、
 python setup.py build
 python setup.py install
でインストール完了。

テストは、同じディレクトリにあるtest.pyを実行。test.pyの中身は
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 import CaboCha
 
 # c = CaboCha.Parser("");
 c = CaboCha.Parser()
 
 sentence = "太郎はこの本を二郎を見た女性に渡した。"
 
 print c.parseToString(sentence)
 
 tree =  c.parse(sentence)
 
 print tree.toString(CaboCha.FORMAT_TREE)
 print tree.toString(CaboCha.FORMAT_LATTICE)

実行結果は
 $ python test.py
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 <PERSON>太郎</PERSON>は-----------D
                      この-D       |
                        本を---D   |
                        二郎を-D   |
                            見た-D |
                            女性に-D
                            渡した。
 EOS
 
 * 0 6D 0/1 0.000000
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 1 2D 0/0 1.468291
 この    連体詞,*,*,*,*,*,この,コノ,コノ O
 * 2 4D 0/1 0.742535
 本      名詞,一般,*,*,*,*,本,ホン,ホン  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 3 4D 1/2 1.892480
 二      名詞,数,*,*,*,*,二,ニ,ニ        O
 郎      名詞,一般,*,*,*,*,郎,ロウ,ロー  O
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 5D 0/1 1.032296
 見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ    O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 * 5 6D 0/1 0.000000
 女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ        O
 に      助詞,格助詞,一般,*,*,*,に,ニ,ニ O
 * 6 -1D 0/1 0.000000
 渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS

以上で作業終り。これで、かなり遊べそうだ。

***追記 (2011-03-01) CaboChaのparseの出力の解析 [#le0704e4]
まず、CaboChaの使い方(出力の意味?)の説明は、[[この説明:http://www.chasen.org/~taku/software/cabocha/#format]] に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、[[googledocsにあるPython による日本語自然言語処理:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html]](ちなみにこのドキュメントはよく書けていると思うが) の [[CaboChaの項:http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html#cabocha]]では、tree.toString(CaboCha.FORMAT_XML)を指定してXML形式に出力し、それをXML解析せよと書いてあった。それも一法かもしれない。

ここでは、parseでの出力を(pythonの構造体として)出してみよう。対応バージョンはCaboCha-0.60pre4で、以前の0.53では細かいところが異なっているので要注意。

 #!/usr/bin/python
 # coding: utf-8
 
 import CaboCha
 import sys
 import codecs
 
 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
 
 ##c = CaboCha.Parser (sys.argv)
 c = CaboCha.Parser ()
 
 #sentence = "太郎はこの本を二郎を見た女性に渡した。"
 sentence = "太郎と花子は2003年、奈良先端大を卒業した。"
 
 tree =  c.parse (sentence)
 size = tree.size()
 print tree.toString(2)    # 適当にフォーマット2で全体を書いてみる(本論とは関係せず)
 
 print "=================="    # ここから
 
 myid = 0        # 項目のカウンター
 for i in range (0, size):
     token = tree.token (i)
     if token.chunk:
         print "* ", myid, "link=", token.chunk.link, "headpos=", token.chunk.head_pos,\
            "funcpos=", token.chunk.func_pos, "tokensize=", token.chunk.token_size,\
            "tokenpos=", token.chunk.token_pos, "score=", token.chunk.score,\
            "featurelistsize=", token.chunk.feature_list_size
         myid=myid+1
     print "surface=", token.normalized_surface, "feature=", token.feature, "ne=",  token.ne
     print "---"
 
 print "EOS"

参考にしたのは、CaboCha-0.60pre4パッケージ中のpythonの中のCaboCha.pyである。

実行結果の出力は以下のとおり。
                   <PERSON>太郎</PERSON>と-D
                     <PERSON>花子</PERSON>は-----D
                                  2003年、---D
       <ORGANIZATION>奈良先端大</ORGANIZATION>を-D
                                        卒業した。
 EOS
 * 0 1D 0/1 1.360878
 太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー    B-PERSON
 と      助詞,並立助詞,*,*,*,*,と,ト,ト  O
 * 1 4D 0/1 0.000000
 花子    名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ    B-PERSON
 は      助詞,係助詞,*,*,*,*,は,ハ,ワ    O
 * 2 4D 4/4 0.000000
 2      名詞,数,*,*,*,*,2,ニ,ニ        O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 0      名詞,数,*,*,*,*,0,ゼロ,ゼロ    O
 3      名詞,数,*,*,*,*,3,サン,サン    O
 年      名詞,接尾,助数詞,*,*,*,年,ネン,ネン     O
 、      記号,読点,*,*,*,*,、,、,、      O
 * 3 4D 0/1 0.000000
 奈良先端大      名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ   B-ORGANIZATION
 を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ O
 * 4 -1D 1/2 0.000000
 卒業    名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー        O
 し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ      O
 た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   O
 。      記号,句点,*,*,*,*,。,。,。      O
 EOS
 
 ==================
 *  0 link= 1 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 0 score= 1.36087810993 featurelistsize= 12
 surface= 太郎 feature= 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー ne= B-PERSON
 ---
 surface= と feature= 助詞,並立助詞,*,*,*,*,と,ト,ト ne= O
 ---
 *  1 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 2 score= 0.0 featurelistsize= 11
 surface= 花子 feature= 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ ne= B-PERSON
 ---
 surface= は feature= 助詞,係助詞,*,*,*,*,は,ハ,ワ ne= O
 ---
 *  2 link= 4 headpos= 4 funcpos= 4 tokensize= 6 tokenpos= 4 score= 0.0 featurelistsize= 12
 surface= 2 feature= 名詞,数,*,*,*,*,2,ニ,ニ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 0 feature= 名詞,数,*,*,*,*,0,ゼロ,ゼロ ne= O
 ---
 surface= 3 feature= 名詞,数,*,*,*,*,3,サン,サン ne= O
 ---
 surface= 年 feature= 名詞,接尾,助数詞,*,*,*,年,ネン,ネン ne= O
 ---
 surface= 、 feature= 記号,読点,*,*,*,*,、,、,、 ne= O
 ---
 *  3 link= 4 headpos= 0 funcpos= 1 tokensize= 2 tokenpos= 10 score= 0.0 featurelistsize= 11
 surface= 奈良先端大 feature= 名詞,固有名詞,組織,*,*,*,奈良先端大,ナラセンタンダイ,ナラセンタンダイ ne= B-ORGANIZATION
 ---
 surface= を feature= 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ne= O
 ---
 *  4 link= -1 headpos= 1 funcpos= 2 tokensize= 4 tokenpos= 12 score= 0.0 featurelistsize= 14
 surface= 卒業 feature= 名詞,サ変接続,*,*,*,*,卒業,ソツギョウ,ソツギョー ne= O
 ---
 surface= し feature= 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ne= O
 ---
 surface= た feature= 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ ne= O
 ---
 surface= 。 feature= 記号,句点,*,*,*,*,。,。,。 ne= O
 ---
 EOS

>> 続き [[CaboChaで主節の骨組を取り出す>ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]
>> 続き [[ノート/テキストマイニング/CaboChaで主節の骨組を取り出す>ノート/テキストマイニング/CaboChaで主節の骨組を取り出す]]


***おまけ 〜〜 KNP 〜〜 古いし、使わないけれど [#l8b4de6d]
JUMAN系らしい。大分古い。~
大本は http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/~
長尾研: http://www-nagao.kuee.kyoto-u.ac.jp/nl-resource/knp.html~
やってみた情報: www433.elec.ryukoku.ac.jp/~yokomizo/ntool/install.html~
資料: http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp/20050830-practice.ppt~
やってみた情報: http://his.luky.org/ML/vine-users.3/msg08590.html~


>>[[ノート/テキストマイニング/oregano>ノート/テキストマイニング/oregano]]~
>>[[ノート/テキストマイニング/oregano6>ノート/テキストマイニング/oregano6]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS