(論文)BERTによる日本語構文解析
今日は以下の論文についてまとめます。
昨年の「言語処理学会」で発表されたものです。
日本語で分かりやすいのですが、整理もかねてまとめます。
BERT自体の解説はググれば分かりやすい説明があります。
また、以前にまとめましたので、詳細は割愛します。
kento1109.hatenablog.com
なにがスゴい?
「BERTを使って既存の構文解析器の精度を大幅に上回った」という点です。
ここでは、既存の構文解析器として「KNP, Cabocha, J.depP」と比較しています。
従来Shift-Reduce 法やチャンキング段階適用により、係り受け関係を特定する手法が知られています。
「SVMを用いた 統計的日本語係り受け解析」の手法では「係り元(A)」と「係り先(B)」の素性を利用して、
「(A)が(B)に係るか」という二値分類としてSVMを使って問題を解いています。
これらの場合「文そのもの」を入力とするのではなく、文から候補の文節を取り出して、その分類問題としています。
この研究において、BERTではそのような中間状態を必要とせず、End-to-Endで構文解析を行っています。
「End-to-Endがスゴい」という訳ではないのですが、どのようなタスクで解いているのか気になりました。
どうやって実現した?
研究では「構文解析を head selection問題と捉える」とあります。
これは、各入力トークンに対して、主辞のトークンを推測するようなタスクです。
図を見るのが早いです。
例えば、「スタッフ」というトークンであれば、「一同」が主辞(Head)のトークンになります。
こう考えると、トークン毎の何らかの出力を予測する「token classification」の1つと理解できます。
入力のトークン列()で表される時、の主辞がである確率は以下の式で計算されます。
を全体のトークンについてsoftmax関数を取ったものです。
重要なのはスコアですが、以下のように計算しています。
はTransfomerの最終層のembeddingです。
一般的には768次元のベクトルになるでしょうか。
(この次元数をと書いておきます。)
にの重みを掛けています。
パラメータについては論文では詳しい記載はありませんが、
head selectionに関する参考文献を見ると詳しく書いてあります。
その論文通りにスコア設計されているとすると、
のパラメータになります。
これを計算すると、スカラー値のスコアが計算できます。
実験結果は以下の通りです。
最後に
構文解析を「token classification」として解くことに違和感があったのですが、
それは「クラス数をどのように決めるのか」が自明ではないのではという疑問からでした。
しかし、BERTでは事前に入力の系列長を指定するので、長さが可変になることはありません。
なので、系列長を128とすれば、128クラスの分類問題となります。
そう考えると「token classification」として解くことに問題はないように思いました。
BERTなどを利用したEnd-to-Endモデルでは「関係抽出」にも応用されてたりもするので、
そこら辺もキャッチアップしていきたいです。