yasuokaの日記: 東北大学bert-large-japaneseによる「石炭をば早や積み果てつ」の係り受け解析
東北大学からbert-large-japaneseがリリースされたので、SuPar-UniDicの係り受け解析モジュールに組み込んでみた。これに合わせて、「共通テスト2021『国語』問題文Universal Dependencies」のベンチマーク結果も更新したのだが、第2問(近代文)の結果が、イマイチふるわない。BERTのlargeモデルのはずなのに、どういうことだろうと思って、とりあえず青空文庫BERTと比較してみることにした。まずはインストール。
$ pip3 install -U suparunidic --user
$ pip3 install fugashi unidic-lite ipadic sentencepiece --user
使いもしないipadicを、なぜtransformersが要求するのか謎なのだが、まあ、入れておいた方がいいようだ。インストールがうまくいったら、近代文語UniDicとbert-large-japaneseを使って、「石炭をば早や積み果てつ」を係り受け解析してみよう。
$ python3
>>> import suparunidic
>>> nlp=suparunidic.load(UniDic="kindai",BERT="bert-large-japanese")
>>> doc=nlp("石炭をば早や積み果てつ")
>>> print(suparunidic.to_conllu(doc))
# text = 石炭をば早や積み果てつ
1 石炭 石炭 NOUN 名詞-普通名詞-一般 _ 6 nsubj _ SpaceAfter=No|Translit=セキタン
2 をば をば ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|Translit=ヲバ
3 早や 早 ADV 副詞 _ 6 advmod _ SpaceAfter=No|Translit=ハヤ
4 積み 積む VERB 動詞-一般 _ 6 advcl _ SpaceAfter=No|Translit=ツミ
5 果て 果てる VERB 動詞-非自立可能 _ 4 mark _ SpaceAfter=No|Translit=ハテ
6 つ つ AUX 助動詞 _ 0 root _ SpaceAfter=No|Translit=ツ
>>> import deplacy
>>> deplacy.render(doc,Japanese=True)
石炭 NOUN ═╗<════╗ nsubj(主語)
をば ADP <╝ ║ case(格表示)
早や ADV <════╗ ║ advmod(連用修飾語)
積み VERB ═╗<╗ ║ ║ advcl(連用修飾節)
果て VERB <╝ ║ ║ ║ mark(標識)
つ AUX ═══╝═╝═╝ ROOT(親)
「積み果てつ」のところの係り受けが、明らかにおかしい。続けて、青空文庫BERTによる係り受け解析と比較してみよう。
>>> nlp=suparunidic.load(UniDic="kindai",BERT="bert-japanese-aozora6m3m-unidic32k-2m")
>>> doc=nlp("石炭をば早や積み果てつ")
>>> print(suparunidic.to_conllu(doc))
# text = 石炭をば早や積み果てつ
1 石炭 石炭 NOUN 名詞-普通名詞-一般 _ 4 obj _ SpaceAfter=No|Translit=セキタン
2 をば をば ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|Translit=ヲバ
3 早や 早 ADV 副詞 _ 4 advmod _ SpaceAfter=No|Translit=ハヤ
4 積み 積む VERB 動詞-一般 _ 0 root _ SpaceAfter=No|Translit=ツミ
5 果て 果てる AUX 動詞-非自立可能 _ 4 aux _ SpaceAfter=No|Translit=ハテ
6 つ つ AUX 助動詞 _ 4 aux _ SpaceAfter=No|Translit=ツ
>>> deplacy.render(doc,Japanese=True)
石炭 NOUN ═╗<════╗ obj(目的語)
をば ADP <╝ ║ case(格表示)
早や ADV <════╗ ║ advmod(連用修飾語)
積み VERB ═╗═╗═╝═╝ ROOT(親)
果て AUX <╝ ║ aux(動詞補助成分)
つ AUX <══╝ aux(動詞補助成分)
青空文庫BERTの方は、完璧な解析結果だ。これらの結果を、私(安岡孝一)なりに解釈すると、近代文語UniDicと青空文庫BERTは「つ」の助動詞用例を知っているが、bert-large-japaneseは「つ」を助動詞だと思ってない。もちろんvocab.txtに「つ」は含まれており、元ネタの日本語Wikipediaにも「持ちつ持たれつ」など用例があるはずだが、これらの「つ」をbert-large-japaneseは助動詞だと認識できていない、ということだろう。ただ、これらの「つ」が助動詞かどうかは、そもそも議論があるらしいし、まあ、難しい話なのかしら。
東北大学bert-large-japaneseによる「石炭をば早や積み果てつ」の係り受け解析 More ログイン