yasuokaの日記: Turku-neural-parser-pipelineのフェロー語係り受け解析をGoogle Colaboratoryで動かす
Turku-neural-parser-pipelineの言語モデルを眺めていたところ、フェロー語の言語モデルが含まれているのに気づいた。とりあえず、Google Colaboratory上でdeplacyに繋いでみよう。
!pip install deplacy ufal.udpipe configargparse tensorflow==1.12.2 torch==0.4.1 torchtext==0.3.1 torchvision==0.2.1
!test -d Turku-neural-parser-pipeline || git clone --depth=1 https://github.com/TurkuNLP/Turku-neural-parser-pipeline
!cd Turku-neural-parser-pipeline && git submodule update --init --recursive && test -d models_fo_oft || python fetch_models.py fo_oft
!cd Turku-neural-parser-pipeline/models_fo_oft/Data && test -f wiki.filtered.fo.vec || ln -s wiki.fo.vec wiki.filtered.fo.vec
import sys,subprocess
nlp=lambda t:subprocess.run([sys.executable,"full_pipeline_stream.py","--gpu","-1","--conf","models_fo_oft/pipelines.yaml"],cwd="Turku-neural-parser-pipeline",input=t,encoding="utf-8",stdout=subprocess.PIPE).stdout
doc=nlp("Ofta taka trøll góða manna børn.")
import deplacy
deplacy.render(doc)
deplacy.serve(doc,port=None)
tensorflowを1.12.2にバージョンダウンしないと動かないあたり、かなり昔のソフトウェアを思わせる。「Ofta taka trøll góða manna børn.」を係り受け解析してみたところ、私(安岡孝一)の手元では、以下の結果が得られた。
Ofta ADV <══════╗ advmod
taka VERB ═╗═══╗═╝═╗ root
trøll NOUN <╝ ║ ║ obj
góða ADV <══╗ ║ ║ case
manna ADJ <╗ ║ ║ ║ amod
børn NOUN ═╝═╝<╝ ║ obj
. PUNCT <════════╝ punct
# newdoc
# newpar
# sent_id = 1
# text = Ofta taka trøll góða manna børn.
1 Ofta rót ADV _ Degree=Pos 2 advmod _ _
2 taka taka VERB _ VerbForm=Inf|Voice=Act 0 root _ _
3 trøll trøll NOUN _ Case=Nom|Definite=Ind|Gender=Com|Number=Sing 2 obj _ _
4 góða góður ADV _ _ 6 case _ _
5 manna maður ADJ _ Case=Nom|Degree=Pos|Number=Plur 6 amod _ _
6 børn barn NOUN _ Case=Nom|Definite=Ind|Gender=Neut|Number=Plur 2 obj _ SpaceAfter=No
7 . . PUNCT _ _ 2 punct _ SpacesAfter=\n
SVGで可視化すると、こんな感じ。残念ながら「taka」=obj⇒「trøll」が解析ミスで、ここはobj(目的語)ではなくnsubj(主語)とすべきだろう。ただ、他の係り受け解析ツールは、どれもフェロー語はサポートしてないようなので、とりあえずはTurku-neural-parser-pipelineを使うしかないかな。
Turku-neural-parser-pipelineのファロー語係り受け解析をGoogle Colaboratoryで動かす More ログイン