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

yasuokaの日記: StanfordNLPで読む『吾輩は猫である』

日記 by yasuoka

StanfordNLPの新しいバージョン0.2.0がリリースされたので、少しばかり動かしてみた。まずは、python3のpip3でインストール。

% pip3 install stanfordnlp==0.2.0
% python3
>>> import stanfordnlp
>>> stanfordnlp.download("ja")

確かに、言語モデルが以前より小さくなっており、私(安岡孝一)の手元では、ダウンロードも処理も早くなっている気がする。試しに、言語処理100本ノック2015の『吾輩は猫である』から、「ヴァイオリンを始める」文を探してみよう。

% python3
>>> import stanfordnlp,urllib.request
>>> ja=stanfordnlp.Pipeline(lang="ja")
>>> 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.sentences:
...   f=False
...   for w in s.words:
...     if w.lemma=="ヴァイオリン" and w.dependency_relation=="obj":
...       if s.words[w.governor-1].lemma=="始める":
...         f=True
...   if f:
...     print("".join("\t".join([str(w.index),w.text,w.lemma,w.upos,w.xpos,w.feats,str(w.governor),w.dependency_relation,"_","_"])+"\n" for w in s.words))
...
1    「    「    PUNCT    _    _    2    punct    _    _
2    君    君    PRON    _    _    11    nmod    _    _
3    は    は    ADP    _    _    2    case    _    _
4    ヴァイオリン    ヴァイオリン    NOUN    _    _    9    obj    _    _
5    を    を    ADP    _    _    4    case    _    _
6    いつ    いつ    NOUN    _    _    7    compound    _    _
7    頃    頃    NOUN    _    _    9    obl    _    _
8    から    から    ADP    _    _    7    case    _    _
9    始め    始める    VERB    _    _    11    acl    _    _
10    た    た    AUX    _    _    9    aux    _    _
11    のかい    のかいる    NOUN    _    _    0    root    _    _
12    。    。    PUNCT    _    _    11    punct    _    _

SVGで可視化すると、こんな感じ。「のかいる」にイラっとくるものの、「ヴァイオリンを始める」がうまく検索できている。ただ、残念ながら、StanfordNLP 0.2.0が学習元にしているのは、旧版のUniversal Dependencies 2.2のようである。Universal Dependencies 2.4への対応は、もうしばらくかかるのかなぁ…。

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

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...