パスワードを忘れた? アカウント作成
14147183 journal
人工知能

yasuokaの日記: 多言語文法解析ツールとしてのspacy-udpipe

日記 by yasuoka

spacy-udpipeが0.2.0にバージョンアップ、との連絡をいただいた。spacy-udpipeは、UDPipeの言語モデルをspaCy上で使うためのツールで、今回のバージョンアップにより、Universal Dependencies 2.5の言語モデルのうち、91モデルを使えるようになった。とりあえず、インストール。

$ pip3 install -U spacy-udpipe

LinuxやMac OS Xなら、インストールはpip一発で、非常に簡単。Cygwinでも、python37-devel python37-pip python37-cython python37-numpy gcc-g++を入れておけば

$ pip3.7 install -U spacy-udpipe --no-build-isolation

の1行でインストールできる。インストールがうまくいったなら、とりあえず、日本語と英語とポルトガル語のモデルを、ダウンロードしてみよう。

$ python3
>>> import spacy_udpipe
>>> spacy_udpipe.download("ja")
>>> spacy_udpipe.download("en")
>>> spacy_udpipe.download("pt")

ダウンロードに続いて、「笑顔で彼は座った」「He sat down with smiling face」「Ele se sentou com um sorriso no rosto」の3つの文を、解析してみよう。

>>> ja=spacy_udpipe.load("ja")
>>> en=spacy_udpipe.load("en")
>>> pt=spacy_udpipe.load("pt")
>>> for s in [ja("笑顔で彼は座った"),en("He sat down with smiling face"),pt("Ele se sentou com um sorriso no rosto")]:
...   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_.lower(),"_","_" if t.whitespace_ else "SpaceAfter=No"])+"\n" for t in s))
...
1    笑顔    笑顔    NOUN    NN    _    5    obl    _    SpaceAfter=No
2    で    で    ADP    PS    _    1    case    _    SpaceAfter=No
3    彼    彼    PRON    NP    _    5    nsubj    _    SpaceAfter=No
4    は    は    ADP    PK    _    3    case    _    SpaceAfter=No
5    座っ    座る    VERB    VV    _    0    root    _    SpaceAfter=No
6    た    た    AUX    AV    _    5    aux    _    SpaceAfter=No

1    He    he    PRON    PRP    _    2    nsubj    _    _
2    sat    sit    VERB    VBD    _    0    root    _    _
3    down    down    ADP    RP    _    2    compound:prt    _    _
4    with    with    SCONJ    IN    _    5    mark    _    _
5    smiling    smiling    VERB    VBG    _    2    advcl    _    _
6    face    face    NOUN    NN    _    5    obj    _    SpaceAfter=No

1    Ele    _    PRON    PRON    _    3    nsubj    _    _
2    se    _    PRON    PRON    _    3    obj    _    _
3    sentou    sentar    VERB    VERB    _    0    root    _    _
4    com    _    ADP    ADP    _    6    case    _    _
5    um    _    DET    DET    _    6    det    _    _
6    sorriso    sorriso    NOUN    NOUN    _    3    nmod    _    _
7    en    en    ADP    ADP    _    9    case    _    _
8    o    o    DET    DET    _    9    det    _    _
9    rosto    rosto    NOUN    NOUN    _    6    nmod    _    SpaceAfter=No

ざっと見た限りだと、日本語英語はほぼ完璧で、ポルトガル語は「sentou」←nmod─「sorriso」だけが少し変だ。ここはnmodではなくoblのはずだが、ここさえ直せば完璧なので、すこぶる惜しい。よければ、他の言語モデルも試してみてほしい。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...