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

yasuokaの日記: 日本語係り受け解析エンジンとしてのNLP-Cube

日記 by yasuoka

AdobeのNLP-Cube1.0.5のベクトル・ダウンロード回りが治った、との連絡をいただいた。昨日の日記に続いて、NLP-Cubeの日本語モデルもインストールしてみよう。

% pip3 install nlpcube
% python3
>>> from cube.api import Cube
>>> Cube(verbose=True).load("ja")
>>> quit()

巨大なwiki.ja.vecを筆頭に、あちこちから色んなモノを取ってくるので、とにかくダウンロードに時間がかかるが、一回だけ我慢することになる。次に、インターフェースの準備。

% python3
>>> from cube.api import Cube
>>> ja_nlpcube=Cube(verbose=True)
>>> ja_nlpcube.load("ja")
>>> def nlpcube2ud(sentence):
...   return("".join("".join("\t".join([str(t.index),t.word,t.lemma,t.upos,t.xpos,t.attrs,str(t.head),t.label,t.deps,t.space_after])+"\n" for t in s)+"\n" for s in ja_nlpcube(sentence)))
...
>>>

NLP-Cubeを使って、Universal Dependenciesを返す関数が、これで準備できたことになる。どうせなので、私(安岡孝一)の「SVGによるUniversal Dependencies可視化ツール」にも繋いでみよう。

>>> def svgviewer(ud):
...   import urllib.parse,webbrowser
...   webbrowser.open("http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/kyodokenkyu/ud-kanbun/conllusvg/viewer.svg#"+urllib.parse.quote(ud))
...
>>>

これで、関数の準備は完了だ。では「望遠鏡で泳ぐ彼女を見た」を、試しに解析してみよう。

>>> u=nlpcube2ud("望遠鏡で泳ぐ彼女を見た")
>>> print(u)
>>> svgviewer(u)

この結果、私の手元では、以下のUniversal Dependenciesが出力されると同時に、こんな感じのSVGが表示された。

1 望遠鏡 望遠鏡 NOUN _ _ 6 obl _ SpaceAfter=No
2 で だ AUX _ _ 1 case _ SpaceAfter=No
3 泳ぐ 泳ぐ VERB _ _ 4 acl _ SpaceAfter=No
4 彼女 彼女 PRON _ _ 6 obj _ SpaceAfter=No
5 を を ADP _ _ 4 case _ SpaceAfter=No
6 見 見る VERB _ _ 0 root _ SpaceAfter=No
7 た た AUX _ _ 6 aux _ SpaceAfter=No

正しく「望遠鏡←obl─見」となっているのが、素晴らしい。ただ、NLP-Cubeは「で」がAUX(助動詞)になってしまっていて、このあたりが「あと一息」だったりする。ちなみにNLP-Cubeは、wiki.ja.vecを必要としないバージョンを開発中らしいので、個人的には楽しみである。

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

ソースを見ろ -- ある4桁UID

読み込み中...