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

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

日記 by yasuoka

一昨昨日にリリースしたunidic2udを改造して、spaCyの言語モジュールとして使えるようにしたところ、かなり高速化できてしまった。インストール方法は、以下の通り。

% pip3 install 'unidic2ud>=1.0.1'
% pip3 install 'spacy>=2.1.0'

さらなる高速化のために、現代書き言葉UniDicと、UDPipeのjapanese-gsdモデルも手元にダウンロードしておこう。

% python3 -m unidic2ud download.unidic gendai
% python3 -m unidic2ud download.udpipe japanese-gsd

インストールがうまくいったら、一昨日と同様に言語処理100本ノック2015の『吾輩は猫である』から、「バイオリンを始める」文、すなわち「バイオリン←obj─始める」という係り受けを、spaCyで探してみよう。

% python3
>>> import unidic2ud.spacy
>>> ja=unidic2ud.spacy.load("gendai")
>>> import urllib.request
>>> with urllib.request.urlopen("http://www.cl.ecei.tohoku.ac.jp/nlp100/data/neko.txt") as r:
...   q=r.read()
...
>>> doc=ja(q.decode("utf-8"))
>>> g=set(t.sent for t in doc if t.lemma_=="バイオリン" and t.dep_=="obj" and t.head.lemma_=="始める")
>>> print(g)
[「君はヴァイオリンをいつ頃から始めたのかい。]

私(安岡孝一)の手元の非力なマシンでも、係り受け解析も含め、5分たらずで目的の文が探せてしまう。Universal Dependenciesの形で係り受けを見るなら

>>> print(unidic2ud.spacy.to_conllu(g))
# 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

でOKだ。MeCabとUDPipeが高速な上に、spaCyもかなり高速なので、素晴らしく速い。さて、この方法で、古典中国語(漢文)向けudkanbunの方も、何とかspaCyモジュールにできないかな…。

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

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...