
yasuokaの日記: 英語係り受け解析エンジンとしてのspacy_udpipe
ネットサーフィンしていたところ、spacy_udpipeというpython3ライブラリを見つけたので、試してみることにした。UDPipeの各言語モデルをpythonでラップして、spaCyから使えるようにしたライブラリのようだ。まずはpip3とpython3でインストール。
% pip3 install spacy_udpipe
% python3
>>> import spacy_udpipe
>>> spacy_udpipe.download("en")
>>> quit()
あちこちから、色んなものをダウンロードしてくるので、かなり時間がかかるのだが、これで、UDPipeの英語english-partut-ud-2.4モデルが、python3から使えるようになったはずである。試しに「He sat down with smiling face」を係り受け解析してみよう。
% python3
>>> import spacy_udpipe
>>> en=spacy_udpipe.load("en")
>>> s=en("He sat down with smiling face")
>>> print("".join("\t".join([str(t.i+1),t.orth_,t.lemma_,t.pos_,t.tag_,"_",str(0 if t.head==t else t.head.i+1),t.dep_,"_","_" if t.whitespace_ else "SpaceAfter=No"])+"\n" for t in s))
1 He he PRON PE _ 2 nsubj _ _
2 sat sat VERB V _ 0 ROOT _ _
3 down down ADV B _ 2 advmod _ _
4 with with ADP E _ 5 mark _ _
5 smiling smiling VERB V _ 2 advcl _ _
6 face face NOUN S _ 5 obj _ SpaceAfter=No
「CoNLL-U SVG Editor」で可視化すると、こんな感じ。ROOTが大文字なのを除いては、ちゃんとUniversal Dependencies準拠の係り受け解析がおこなえている。ただ、英語の形態素解析としては、LEMMA(第3フィールド)がちゃんと解析できておらず、たとえばsatが原形のsitになってないのが、私(安岡孝一)個人としては微妙に不満だ。spaCyのen_core_web_smモデルと較べると、まあ一長一短なのだが、さて、どっちを使うべきだろう。
英語係り受け解析エンジンとしてのspacy_udpipe More ログイン