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

yasuokaの日記: unidic2udと現代書き言葉UniDicで読む『吾輩は猫である』

日記 by yasuoka

昨日リリースした 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語の中から見つけている。スピードの点でも、GiNZAStanfordNLPに遜色ないようだ。問題は、セットアップ時の辞書ダウンロードにかかる時間かな。

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

最初のバージョンは常に打ち捨てられる。

読み込み中...