2022年2月1日火曜日

GiNZAによる係り受け解析とユーザ辞書の活用

【what is this】自然言語処理の応用として、以前、係り受け解析器CaboChaを用いた記事(論文)を書きました。その後しばらく間があったのですが、今回は、GiNZAの係り受け解析を調べました。そのなかで、解析対象文章の種類によっては、GiNZAに含まれる解析器spaCyのSudachiPyユーザ辞書機能が非常に有効であることも確認しました。

続編はこちらです

GiNZAによる単語間/文節間係り受け解析
 CaboChaは、文節間係り受けを与えますが、GiNZA4.05に含まれるspaCy2.3はそうではなく、単語間係り受けを提供します。しかし、GiNZAには、ginza.bunsetu_spansという関数があって、spaCyのSpanとして文節を取り出せます。そして、文節bに対するb.leftsを利用すると、文節間係り受け解析が可能になります。このb.leftsですが、京都大学の安岡孝一教授の解説[1]には、以下のように書かれていました。

b.leftsは、文節bから左向き(文頭方向)に出ている単語係り受けのうち、文節の外に出ていくものの一覧だが、これを逆向きに解釈すれば、文節間の係り受けとして扱える。」

 最初にこれを読んだ時、これって何を意味するのか分からず困りました!そこで、簡単な例文について、図1のように、ステップを踏んでトレースした結果、「なるほど!」と納得できました。

(図はクリックすると拡大されます)
 図1は、例文「葉は虎柄の長い卵形である。」の解析結果です。黒矢印は単語間係り受けで、青枠は関数ginza.bunsetu_spansから得られる文節です。そして、赤矢印が、上記の「文節bから左向き(文頭方向)に出ている単語係り受けのうち、文節の外に出ていくものの一覧」となっていることが分かります。この後は、赤矢印の先の単語を含む文節を、関数 ginza.bunsetu_span (末尾にsが付かない) で得て、赤矢印と逆方向に青矢印を付ければ、文節間係り受けとなります。その結果は以下のとおりです。
 葉は→ 卵形である。
 虎柄の→ 卵形である。
 長い→ 卵形である。

別の文章も文節間係り受け解析(with ユーザ辞書)
 他のいくつかの例文に対しても行ってみたいと思います。ここで、参考文献[2]にある以下の記述が気になりました:
「GiNZAの係り受け解析の深層学習モデルは、UD Japanese BCCW v.2.6から新聞系文書を除外したもので学習しています。」

 ということは、一般の話し言葉などには強いが、新聞記事や専門用語を含む学術文書などの「堅い文章」にはあまり強くないということでしょうか?そこで、「堅い文章」に属すと思われる、渡辺坦氏の「デジタル植物写真集」[3]から引用した以下の2つの文章について検討します。
 [例文2] 根生葉は倒被針形で、濃紫色の唇形花が葉腋に咲く。
 [例文3] 2回3出複葉をつけ、花弁状萼が白い花を十字形に開く。

[例文2]の係り受け解析
 上記例文2の解析結果を以下に示します。この文には、植物の専門用語「倒披針形」が含まれています。GiNZA(spaCy)の標準辞書のまま解析すると、下図のとおり、形態素解析でこの用語がバラバラにしか認識されません。それが原因で、文節に対するleftsの集合に不具合(誤り)が生じ、その結果として文節間係り受け解析がうまく行きません。

 次に、この「倒披針形」をユーザ辞書に登録して解析した結果が以下の図です。形態素解析でこの単語が認識され、最終的に妥当な文節間係り受けが得られました。


[例文3]の係り受け解析

 例文3につても同様です。この文には、植物の専門用語「2回3出複葉」が含まれています。標準辞書のままでは、例文2の場合と同じく、うまく行きません。


 そこで、この「2回3出複葉」もユーザ辞書に登録して解析した結果が以下の図です。形態素解析でこの用語が認識され、最終的に妥当な文節間係り受けが得られました。素晴らしい!

SudachiPyユーザ辞書の活用
 上記のとおり、ユーザ辞書登録の効果は絶大です。GiNZAでは、SudachiPyの辞書が使われています。高品質で大規模な辞書のようですが、今回のような特定の専門用語などは載っていない場合も当然あるでしょう。それを補うためのユーザ辞書登録は比較的容易です。今回は試行のため、登録したのは以下3件に過ぎませんが。

2回3出複葉,4786,4786,5000,2回3出複葉,名詞,普通名詞,一般,*,*,*,ニカイサンシュツフクヨウ,2回3出複葉,*,*,*,*,*
2回3出複葉,4786,4786,5000,2回3出複葉,名詞,普通名詞,一般,*,*,*,ニカイサンシュツフクヨウ,2回3出複葉,*,*,*,*,*
倒被針形,4786,4786,5000,倒被針形,名詞,普通名詞,形状詞可能,*,*,*,トウヒシンケイ,倒被針形,*,*,*,*,*

 最初の2件は同じ内容ですが、用語のなかの数字(2と3)が半角でも全角でもOKとするためです。第2項〜第4項の数値は、接続IDやコストですが、標準的な値であり、最適値かどうかは分かりません。

 例文を引用した参考資料[3]には、植物の葉や花の形状や付き方に関する専門用語約160件が説明されています。それら全てをユーザ辞書登録することはさほど困難ではありません。それができれば、この資料にある解説文の係り受け解析の精度は格段に向上するはずです。それを利用したアプリケーションも色々考えられます。

補足
 
当方がこれまでに書いた、「自然言語処理」に関するブログ記事は参考資料[4]に纏めてあります。素人の拙文ですが、ご参考にしていただければ幸いです。

参考資料

[1] yasuokaの日記: 単語間・文節間の係り受け解析システムとしてのGiNZA v4.0.0
https://srad.jp/~yasuoka/journal/641184/

[2] 布留川英一:BERT/GPT-3/DALL-E 自然言語処理・画像処理・音声処理 人工知能プログラミング実線入門、ボーンデジタル、2021年8月

[3] 渡辺坦:植物の名前を探しやすい デジタル植物写真集
http://plantidentifier.ec-net.jp/

[4] 山本富士男:https://www.foyo.pro/自然言語処理

0 件のコメント:

コメントを投稿