パスワードを忘れた? アカウント作成
14042499 journal
人工知能

yasuokaの日記: UniDic2UDによるCaboChaエミュレータと本物のCaboChaとの違い

日記 by yasuoka

昨日の日記で公開したUniDic2UDによるCaboChaエミュレータだが、もちろん本物のCaboChaとは挙動が違う。違う点は様々なのだが、もっとも大きな違いは、複数回parseを呼び出した際の挙動だろう。まずは、UniDic2UDのCaboChaエミュレータで「吾輩は猫である」と「名前はまだ無い」を係り受け解析してみよう。

% python3
>>> import unidic2ud.cabocha as CaboCha
>>> c=CaboCha.Parser()
>>> s1=c.parse("吾輩は猫である")
>>> s2=c.parse("名前はまだ無い")
>>> print(s1.toString(CaboCha.FORMAT_TREE))
吾輩は-D
猫である
EOS

>>> print(s2.toString(CaboCha.FORMAT_TREE))
名前は---D
    まだ-D
      無い
EOS

>>> print(s1.sentence())
吾輩は猫である
>>> print(s2.sentence())
名前はまだ無い
>>> print(s1 is s2)
False
>>> print(s1==s2)
False

同じことをCaboCha 0.69のpythonバインドでおこなうと、少なくとも私(安岡孝一)の手元では以下のようになる。

% python3
>>> import CaboCha
>>> c=CaboCha.Parser()
>>> s1=c.parse("吾輩は猫である")
>>> s2=c.parse("名前はまだ無い")
>>> print(s1.toString(CaboCha.FORMAT_TREE))
名前は---D
    まだ-D
      無い
EOS

>>> print(s2.toString(CaboCha.FORMAT_TREE))
名前は---D
    まだ-D
      無い
EOS

>>> print(s1.sentence())
名前はまだ無い
>>> print(s2.sentence())
名前はまだ無い
>>> print(s1 is s2)
False
>>> print(s1==s2)
False

本物のCaboChaの方は、なかなかにトッポイ挙動であり、これをエミュレートするのは至難のわざだ。あるいは、CaboChaのpythonバインドにおいて、バッファの使い回しをswigに理解させるべきなのかもしれないが、CaboChaは4年以上前に開発が終了していて、今さら無理に直す理由もないだろう。そんなわけで、CaboChaの出力フォーマットを真似ているものの、UniDic2UDのunidic2ud.cabochaは、全く別の係り受け解析器である。そのつもりで使ってほしい。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

読み込み中...