ノート/テキストマイニング
訪問者数 4103      最終更新 2014-01-29 (水) 10:16:28

>>ノート/テキストマイニング/oregano
>>ノート/テキストマイニング/oregano6?

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

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

CaboCha? (v 0.53)

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

CaboCha-0.60pre4 (UTF-8対応)

新しいバージョン (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

前にも言った(ここ、shared libraryのロード時の検索パスの問題で、エラーが出るので、ldconfigを再度実行。毎回実行するのはかったるいと思いつつ。

(2010-10-13 追記)新しいOregano (Fedora12/x86_64)では、0.60pre4はコンパイルエラーになる。公開版の 0.53 で導入。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の出力の解析

まず、CaboChaの使い方(出力の意味?)の説明は、この説明 に簡単に書いてある。十分とは言えない?

CaboChaでparseした後の出力を、googledocsにあるPython による日本語自然言語処理(ちなみにこのドキュメントはよく書けていると思うが) の 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 〜〜 古いし、使わないけれど

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?


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-01-29 (水) 10:16:28 (3346d)