yasuokaの日記: NLP-Cubeで読む『吾輩は猫である』
AdobeのNLP-Cube 0.1.0.7がリリースされた、との御連絡をいただいた。とりあえず、pip3とpython3で、日本語モデル1.1も含め、インストール。
% pip3 install nlpcube==0.1.0.7
% python3
>>> from cube.api import Cube
>>> Cube().load("ja",1.1)
>>> quit()
今回のリリースの目玉は、Universal Dependenciesの出力回りの改善で、解析性能とかは改善されてない。試しに、言語処理100本ノック2015の『吾輩は猫である』から「ヴァイオリンを始める」文をNLP-Cubeで探してみよう。
% python3
>>> from cube.api import Cube
>>> ja=Cube()
>>> ja.load("ja")
>>> import urllib.request
>>> with urllib.request.urlopen("http://www.cl.ecei.tohoku.ac.jp/nlp100/data/neko.txt") as r:
... q=r.read()
...
>>> u=ja(q.decode("utf-8"))
>>> for s in u:
... f=False
... for w in s:
... if w.lemma=="ヴァイオリン" and w.label=="obj":
... if s[w.head-1].lemma=="始める":
... f=True
... if f:
... print("".join(str(w)+"\n" for w in s))
...
1 「 「 PUNCT _ _ 2 punct _ SpaceAfter=No
2 君 君 PRON _ _ 12 nsubj _ SpaceAfter=No
3 は は ADP _ _ 2 case _ SpaceAfter=No
4 ヴァイオリン ヴァイオリン NOUN _ _ 9 obj _ SpaceAfter=No
5 を を ADP _ _ 4 case _ SpaceAfter=No
6 いつ いつ NOUN _ _ 7 compound _ SpaceAfter=No
7 頃 頃 NOUN _ _ 9 obl _ SpaceAfter=No
8 から から ADP _ _ 7 case _ SpaceAfter=No
9 始め 始める VERB _ _ 12 acl _ SpaceAfter=No
10 た た AUX _ _ 9 aux _ SpaceAfter=No
11 の の PART _ _ 9 case _ SpaceAfter=No
12 かい かい AUX _ _ 0 root _ SpaceAfter=No
13 。 。 PUNCT _ _ 12 punct _ SpaceAfter=No
SVGで可視化するとこんな感じ。「君←nsubj」の係り受けリンクが「始め」じゃなくて「かい」から出ているのはイラっとくるものの、「ヴァイオリンを始める」がうまく検索できている。ただ、私(安岡孝一)の見る限り、日本語の解析性能においては、現状ではNLP-CubeよりGiNZAの方が上である。このあたり、「望遠鏡で泳ぐ彼女を見た」などを解析して、実際に確かめてみてほしい。
NLP-Cubeで読む『吾輩は猫である』 More ログイン