![人工知能 人工知能](https://srad.jp/static/topics/ai_64.png)
yasuokaの日記: GiNZAで読む『吾輩は猫である』
私(安岡孝一)の一昨昨日の日記の読者から、GiNZAも紹介してほしい旨の御意見をいただいた。実は4月29日の日記で、さりげなく紹介してるのだけど、とりあえずpip3でGiNZA 1.0.2をインストール。
% pip3 install https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz
インストールがうまくいったら、昨日と同様、言語処理100本ノック2015の『吾輩は猫である』から、「ヴァイオリンを始める」文をGiNZAで探してみよう。
% python3
>>> import spacy,urllib.request
>>> ja=spacy.load("ja_ginza_nopn")
>>> 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"))
>>> from spacy.lang.ja_ginza.cli import token_line
>>> for s in u.sents:
... f=False
... for w in s:
... if w.lemma_=="バイオリン" and w.dep_=="obj":
... if w.head.lemma_=="始める":
... f=True
... if f:
... print("".join(token_line(w,{})+"\n" for w in s))
...
180822 「 「 PUNCT 補助記号-括弧開 _ 180823 punct _ SpaceAfter=No
180823 君 君 PRON 代名詞 _ 180829 nsubj _ SpaceAfter=No|NE=PRODUCT_B
180824 は は ADP 助詞-係助詞 _ 180823 case _ SpaceAfter=No|NE=PRODUCT_I
180825 ヴァイオリン バイオリン NOUN 名詞-普通名詞-一般 _ 180829 obj _ SpaceAfter=No|NE=PRODUCT_I
180826 を を ADP 助詞-格助詞 _ 180825 case _ SpaceAfter=No|NE=PRODUCT_I
180827 いつ頃 何時頃 NOUN 名詞-普通名詞-副詞可能 _ 180829 nmod _ SpaceAfter=No|NE=PRODUCT_I
180828 から から ADP 助詞-格助詞 _ 180827 case _ SpaceAfter=No|NE=PRODUCT_I
180829 始め 始める VERB 動詞-非自立可能 _ 180833 advcl _ SpaceAfter=No|NE=PRODUCT_I
180830 た た AUX 助動詞 _ 180829 aux _ SpaceAfter=No|NE=PRODUCT_I
180831 の の SCONJ 助詞-準体助詞 _ 180829 mark _ SpaceAfter=No|NE=PRODUCT_I
180832 か か PART 助詞-終助詞 _ 180829 case _ SpaceAfter=No|NE=PRODUCT_I
180833 い い PART 助詞-終助詞 _ 0 root _ SpaceAfter=No|NE=PRODUCT_I
180834 。 。 PUNCT 補助記号-句点 _ 180833 punct _ NE=PRODUCT_I
SVGで可視化すると、こんな感じ。文末の「い」をrootにするのは議論の余地があるものの、「ヴァイオリンを始める」がうまく検索できている。ただ、UDPipeやStanfordNLPやNLP-Cubeと違って、GiNZAは日本語専用なのがちょっとつらい。せめて、古典中国語(漢文)に対応してくれないかなぁ…。
GiNZAで読む『吾輩は猫である』 More ログイン