yasuokaの日記: 英語係り受け解析エンジンとしてのspaCy
ゴールデンウィーク2日目だが、実はspaCyのen_core_web_smモデルも、英語の係り受け解析に使える。ただし、en_core_web_smの記述法は、旧版のStanford Typed Dependenciesに則っていて、現在のUniversal Dependenciesとは必ずしも合致しない。とりあえず、spaCyとen_core_web_smをインストールしてみよう。
% pip3 install spacy
% python3 -m spacy download en_core_web_sm
ダウンロードにちょっと時間がかかるものの、python3とpip3があれば、インストールは簡単である。昨日の日記と同様「He sat down with smiling face」を係り受け解析してみたところ、私(安岡孝一)の手元では以下のようになった。
% python3
>>> import spacy
>>> en=spacy.load("en_core_web_sm")
>>> 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 -PRON- PRON PRP _ 2 nsubj _ _
2 sat sit VERB VBD _ 0 ROOT _ _
3 down down PART RP _ 2 prt _ _
4 with with ADP IN _ 2 prep _ _
5 smiling smile VERB VBG _ 6 amod _ _
6 face face NOUN NN _ 4 pobj _ SpaceAfter=No
SVGで可視化すると、こんな感じ。sat ─prep→ with ─pobj→ faceという部分が、Universal Dependenciesとはラベルも記述法も異なっている。
つまり、Universal Dependenciesにおいては「前置詞←名詞」という係り受け矢印方向なのだが、旧版のStanford Typed Dependencies(あるいはМельчук依存文法)においては「前置詞→名詞」だったのである。このあたりは、ポリシーの違いとしか言いようがないのだが、できればspaCyもUniversal Dependencies版が欲しいなぁ。
英語係り受け解析エンジンとしてのSpaCy More ログイン