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

yasuokaの日記: 旧字旧仮名日本語解析ツールとしてのCamphr-Udify

日記 by yasuoka

昨日の日記で「國境のトンネルを拔けると、窓の外の夜の底が白くなつた。」を係り受け解析したのだが、Camphr-Udifyのja_mecab_udify 0.5を紹介しなかった。というのも、Camphr-Udifyはトークナイザ(単語切りモジュール)を「外部委託」しており、トークナイザを付け替えることによって、かなり性能が変わるのだ。まずは、トークナイザとしてmecab-python3のデフォルト辞書(ipadic)を、Google Colaboratory上で使ってみよう。

!pip install ja-mecab-udify@https://github.com/PKSHATechnology-Research/camphr_models/releases/download/0.5/ja_mecab_udify-0.5.tar.gz
!pip install mecab-python3 deplacy
import ja_mecab_udify
nlp=ja_mecab_udify.load()
doc=nlp("國境のトンネルを拔けると、窓の外の夜の底が白くなつた。")
import deplacy
deplacy.render(doc)

deplacyで可視化した結果は、私(安岡孝一)の手元では以下のようになった。正直うまく解析できてない。

國       NOUN  <╗               compound
境       NOUN  ═╝═╗<╗           nmod
の       ADP   <══╝ ║           case
トンネル NOUN  ═╗═══╝<╗         obj
を       ADP   <╝     ║         case
拔       VERB  ═╗═════╝═╗═╗<╗   advcl
ける     AUX   <╝       ║ ║ ║   aux
と       SCONJ <════════╝ ║ ║   mark
、       PUNCT <══════════╝ ║   punct
窓       NOUN  ═╗<╗         ║   nmod
の       ADP   <╝ ║         ║   case
外       NOUN  ═╗═╝<╗       ║   nmod
の       ADP   <╝   ║       ║   case
夜       NOUN  ═╗═══╝<╗     ║   nmod
の       ADP   <╝     ║     ║   case
底       NOUN  ═╗═════╝<╗   ║   nsubj
が       ADP   <╝       ║   ║   case
白く     ADJ   ═╗═══════╝<╗ ║   advcl
な       AUX   <╝         ║ ║   aux
つ       VERB  ═╗═════════╝═╝═╗ root
た       AUX   <╝             ║ aux
。       PUNCT <══════════════╝ punct

では、トークナイザをUniDic2UD+旧仮名口語UniDicに付け替えてみよう。

!pip install ja-mecab-udify@https://github.com/PKSHATechnology-Research/camphr_models/releases/download/0.5/ja_mecab_udify-0.5.tar.gz
!pip install unidic2ud deplacy
!unidic2ud --download=qkana
import ja_mecab_udify
nlp=ja_mecab_udify.load()
import unidic2ud
qkana=unidic2ud.load(UniDic="qkana",UDPipe=None)
nlp.tokenizer.tokenizer=qkana.mecab.__self__
doc=nlp("國境のトンネルを拔けると、窓の外の夜の底が白くなつた。")
import deplacy
deplacy.render(doc)

deplacyで可視化した結果は、私の手元では以下のようになった。

國境     NOUN  ═╗<╗           nmod
の       ADP   <╝ ║           case
トンネル NOUN  ═╗═╝<╗         obj
を       ADP   <╝   ║         case
拔ける   VERB  ═════╝═╗═╗<╗   advcl
と       SCONJ <══════╝ ║ ║   mark
、       PUNCT <════════╝ ║   punct
窓       NOUN  ═╗<╗       ║   nmod
の       ADP   <╝ ║       ║   case
外       NOUN  ═╗═╝<╗     ║   nmod
の       ADP   <╝   ║     ║   case
夜       NOUN  ═╗═══╝<╗   ║   nmod
の       ADP   <╝     ║   ║   case
底       NOUN  ═╗═════╝<╗ ║   nsubj
が       ADP   <╝       ║ ║   case
白く     ADJ   ═╗═╗═════╝═╝═╗ root
なつ     AUX   <╝ ║         ║ aux
た       AUX   <══╝         ║ aux
。       PUNCT <════════════╝ punct

「と」の品詞をSCONJにすべきかCCONJにすべきかは議論があるものの、私の見る限り、ほぼ完璧な結果だ。つまるところ、単語間の係り受け解析の精度を上げようと思ったら、その前段階であるトークナイザの精度を上げなければいけない、というごく当たり前の話なのだが、さて、旧字旧仮名のトークナイザ辞書は、旧仮名口語UniDicしかないのかしら?

この議論は、yasuoka (21275)によって「 ログインユーザだけ」として作成されている。 ログインしてから来てね。
typodupeerror

日本発のオープンソースソフトウェアは42件 -- ある官僚

読み込み中...