![人工知能 人工知能](https://srad.jp/static/topics/ai_64.png)
yasuokaの日記: unidic2udと現代書き言葉UniDicで読む『吾輩は猫である』
昨日リリースした unidic2udの力量を見るべく、現代書き言葉UniDicとjapanese-gsdで『吾輩は猫である』を読んでみた。まずは、unidic2udのインストールと、辞書のダウンロード。
% pip3 install unidic2ud
% python3 -m unidic2ud download.unidic gendai
% python3 -m unidic2ud download.udpipe japanese-gsd
かなり時間がかかると思うが、インストールがうまくいったら、言語処理100本ノック2015の『吾輩は猫である』から、「バイオリンを始める」文、すなわち「バイオリン←obj─始める」という係り受けを、unidic2udで探してみよう。
% python3
>>> import unidic2ud,urllib.request
>>> from itertools import takewhile
>>> ja=unidic2ud.load("gendai")
>>> with urllib.request.urlopen("http://www.cl.ecei.tohoku.ac.jp/nlp100/data/neko.txt") as r:
... q=r.read()
...
>>> ud=ja(q.decode("utf-8"))
>>> f=[i for i,t in enumerate(ud) if t.lemma=="バイオリン" and t.deprel=="obj" and t.head.lemma=="始める"]
>>> g=[[ud[j] for j in takewhile(lambda j:j-ud[j].id==i,range(i+1,len(ud)))] for i in set(i-ud[i].id for i in f)]
>>> s=unidic2ud.UDPipeEntry("".join("# text = "+"".join(t.form if "SpaceAfter=No" in t.misc else t.form+" " for t in h)+"\n"+"".join(str(t)+"\n" for t in h)+"\n" for h in g))
>>> print(s)
# text = 「君はヴァイオリンをいつ頃から始めたのかい。
1 「 「 PUNCT 補助記号-括弧開 _ 2 punct _ SpaceAfter=No
2 君 君 PRON 代名詞 _ 8 nsubj _ SpaceAfter=No|Translit=キミ
3 は は ADP 助詞-係助詞 _ 2 case _ SpaceAfter=No|Translit=ハ
4 ヴァイオリン バイオリン NOUN 名詞-普通名詞-一般 _ 8 obj _ SpaceAfter=No
5 を を ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No|Translit=ヲ
6 いつ頃 何時頃 NOUN 名詞-普通名詞-副詞可能 _ 8 obl _ SpaceAfter=No|Translit=イツゴロ
7 から から ADP 助詞-格助詞 _ 6 case _ SpaceAfter=No|Translit=カラ
8 始め 始める VERB 動詞-非自立可能 _ 0 root _ SpaceAfter=No|Translit=ハジメ
9 た た AUX 助動詞 _ 8 aux _ SpaceAfter=No|Translit=タ
10 の の ADP 助詞-準体助詞 _ 8 case _ SpaceAfter=No|Translit=ノ
11 か か PART 助詞-終助詞 _ 8 mark _ SpaceAfter=No|Translit=カ
12 い い PART 助詞-終助詞 _ 8 mark _ SpaceAfter=No|Translit=イ
13 。 。 PUNCT 補助記号-句点 _ 8 punct _ SpaceAfter=No
非常にコンパクトに書ける上に、辞書をダウンロードしていれば、かなり高速に動作するはずだ。結果として見つかるのは、“「君はヴァイオリンをいつ頃から始めたのかい。”の一文で、「CoNLL-U SVG Editor」で見ると、 こんな感じ。 ちゃんと「ヴァイオリン←obj─始め」という係り受けを、『吾輩は猫である』約10000文200000語の中から見つけている。スピードの点でも、GiNZAやStanfordNLPに遜色ないようだ。問題は、セットアップ時の辞書ダウンロードにかかる時間かな。
unidic2udと現代書き言葉UniDicで読む『吾輩は猫である』 More ログイン