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

yasuokaの日記: BERTモデルを用いた日本語係り受け解析ツールSuPar-UniDicリリース

日記 by yasuoka

昨年12月26日の日記で紹介したSuParを、UniDic2UDに繋いで、SuPar-UniDicという日本語係り受け解析ツールを試作してみた。現時点では、10種類のUniDic(unidic-liteを含む)を、7種類のBERTモデルと繋げられるので、合計70種類の組み合わせが楽しめる。しかも、解析結果はspaCy準拠だ。とりあえず、インストール。

$ pip3 install git+https://github.com/yzhangcs/parser --user
$ pip3 install suparunidic --user

BERTモデルに、bert-base-japanese-whole-word-maskingbert-base-japanese-chardistilbert-base-japaneseを使いたい場合は、追加で以下をインストールしておいた方がいいだろう。

$ pip3 install fugashi ipadic sentencepiece --user

インストールがうまくいったら、unidic-liteとbert-japanese-aozora6m3m-unidic32k-2mを使って、「昨日は誰も来なかった」を係り受け解析してみよう。

$ python3
>>> import suparunidic
>>> nlp=suparunidic.load("unidic-lite","bert-japanese-aozora6m3m-unidic32k-2m")
>>> doc=nlp("昨日は誰も来なかった")
>>> import deplacy
>>> deplacy.render(doc,Japanese=True)
昨日   NOUN ═╗<════╗ nsubj(主語)
は     ADP  <╝     ║ case(格表示)
誰     PRON ═╗<══╗ ║ obl(斜格補語)
も     ADP  <╝   ║ ║ case(格表示)
来     VERB ═╗═╗═╝═╝ ROOT(親)
なかっ AUX  <╝ ║     aux(動詞補助成分)
た     AUX  <══╝     aux(動詞補助成分)
>>> from deplacy.deprelja import deprelja
>>> for b in suparunidic.bunsetu_spans(doc):
...   for t in b.lefts:
...     print(suparunidic.bunsetu_span(t),"->",b,"("+deprelja[t.dep_]+")")
...
昨日は -> 来なかった (主語)
誰も -> 来なかった (斜格補語)

実は、各BERTモデルには、それぞれに「クセ」みたいなものがあって、得手不得手があるようだ。舞姬/雪國/荒野より-Benchmarksの結果を、ここに示しておいたので、よければ参考にしてほしい。

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

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...