yasuokaの日記: GiNZA v2.0.0で読む『吾輩は猫である』
日本語係り受け解析エンジンGiNZAのv2.0.0がリリースされたので、さっそく使ってみることにした。まずはインストール。
% pip3 install https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz
インストールがうまくいったら、5月20日の日記と同様、言語処理100本ノック2015の『吾輩は猫である』から、「ヴァイオリンを始める」文をGiNZAで探してみよう。
% python3
>>> import spacy,urllib.request
>>> ja=spacy.load("ja_ginza")
>>> 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"))
>>> n={}
>>> for c in u.noun_chunks:
... for i in range(c.start,c.end):
... n[i]="NP_B" if i==c.start else "NP_I"
...
>>> from ginza.command_line 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)+"\n" for w in s))
...
180931 「 「 PUNCT 補助記号-括弧開 _ 180932 punct _ BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No
180932 君 君 PRON 代名詞 _ 180938 nsubj _ BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
180933 は は ADP 助詞-係助詞 _ 180932 case _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
180934 ヴァイオリン バイオリン NOUN 名詞-普通名詞-一般 _ 180938 obj _ BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
180935 を を ADP 助詞-格助詞 _ 180934 case _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
180936 いつ頃 何時頃 NOUN 名詞-普通名詞-副詞可能 _ 180938 nmod _ BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
180937 から から ADP 助詞-格助詞 _ 180936 case _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
180938 始め 始める VERB 動詞-非自立可能 _ 0 root _ BunsetuBILabel=B|BunsetuPositionType=ROOT|SpaceAfter=No
180939 た た AUX 助動詞 _ 180938 aux _ BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
180940 の の SCONJ 助詞-準体助詞 _ 180938 mark _ BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
180941 か か PART 助詞-終助詞 _ 180938 aux _ BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
180942 い い PART 助詞-終助詞 _ 180938 aux _ BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
180943 。 。 PUNCT 補助記号-句点 _ 180938 punct _ BunsetuBILabel=I|BunsetuPositionType=CONT
IDを付け替えて「UDPipe Visualizer with Immediate Catena Tree」で可視化すると、 こんな感じ。「ヴァイオリンを始める」がうまく検索できていて、rootも正しく刺さっているようだ。素晴らしい。さて、このスゴイ技術を、漢文とか旧字旧かなとかに、うまく応用できないかしら。
GiNZA v2.0.0で読む『吾輩は猫である』 More ログイン