非固有表現タグを学習に用いない固有表現抽出モデル: Better Modeling of Incomplete Annotations for Named Entity Recognitionを読んで実装しました
前回に引き続き,部分的アノテーションコーパスが使える固有表現抽出手法の紹介と実装です.
概要
Better Modeling of Incomplete Annotations for Named Entity Recognitionが読んだ論文になります.著者実装はこちら
この論文では部分的アノテーションコーパスに対して,学習を行えるモデルの提案を行っています.
タグ欠損における問題
固有表現抽出のタスクにおいて,ラベルが欠損している教師データを用いて学習を行う手法はいくつか提案されていますが,今までの研究でのラベル欠損の仮定には2つ問題があると主張しています.
問題1
アノテータは基本的に固有表現の一部にだけアノテーションを行うことはない. 例えば「田中太郎」という人名に対して「田中」にだけアノテーションされることはなく,必ず「田中太郎」としてアノテーションされると主張しています.
つまり下図のA.1のようにラベルが欠損することは無いということです.
問題2
アノテータは固有表現にアノテーションするようにだけ指示されていることが多く,Oタグ(固有表現で無いことを示すタグ)を能動的に付けないということ. つまり著者はOタグは学習に使うことが出来ないと考えています.
Better Modeling of Incomplete Annotations for Named Entity Recognitionより引用
これらの問題を踏まえた上で著者はA.3のようにラベルが欠損すると仮定し,このような教師データに対するアプローチを示しています.
ちなみに後の性能評価でも分かりますがA.3のような欠損をしている場合,前回紹介したFuzzy-LSTM-CRFではOタグを学習時に考慮出来なくなるため性能がとても悪くなります.
手法
一般的なCRFの損失関数は以下のように定義されます.
ここで欠損が無いラベル列の集合を,欠損があるラベル列を と定義し,を何らかの方法で欠損を埋めたラベル列の集合をとします.
すると先程のCRFの損失関数は以下のように書き換えることが出来ます.
この確率分布を求める方法として著者はHardとSoftの2種類の手法を提案しています. Hardでは最も通る可能性が高いラベル列に対してのみ確率を割り当て,Softでは取りうる全てのラベル列に対して確率を計算し割り当てを行います.
Hardの具体的な動きについては以下の通りです.
ちなみに定義した損失関数においてとすると,Fuzzy-LSTM-CRFの損失関数と一致します.
実装
著者が論文中で提案したHard methodと比較対象であるSimple(LSTM-CRF), Fuzzy-LSTM-CRFを以下のリポジトリにて実装しました.
(リポジトリ名と内容に違いが出てきたのでどうにかしたいですね)
評価
データセットにはCoNLL-2003を用い,論文と同じように固有表現の五割をランダムに,全てのOタグを欠損させた状態で学習を行いました. ハイパーパラメータも論文に沿ってエポック数30回, k分割した教師データに対する学習とラベル付与(3と4の部分)は10回繰り返しました.
Hard method
precision recall f1-score support PER 0.84393 0.90291 0.87242 1617 LOC 0.82902 0.86331 0.84581 1668 MISC 0.78840 0.65812 0.71739 702 ORG 0.76605 0.74714 0.75648 1661 micro avg 0.81139 0.81498 0.81318 5648 macro avg 0.80972 0.81498 0.81120 5648
Simple
欠損しているタグをOタグと仮定し,LSTM-CRFにて学習したモデルです.論文中で提案されています.
precision recall f1-score support LOC 0.93319 0.78717 0.85398 1668 PER 0.98507 0.16327 0.28011 1617 ORG 0.94824 0.48525 0.64198 1661 MISC 0.89098 0.33761 0.48967 702 micro avg 0.93873 0.46388 0.62093 5648 macro avg 0.94722 0.46388 0.58205 5648
Fuzzy-LSTM-CRF
論文中ではLSTM-M-CRFとして紹介されています.
precision recall f1-score support ORG 0.22550 0.86033 0.35734 1661 MISC 0.05517 0.82336 0.10341 702 PER 0.87629 0.94187 0.90790 1617 LOC 0.06072 0.91547 0.11389 1668 micro avg 0.11572 0.89536 0.20496 5648 macro avg 0.34199 0.89536 0.41150 5648
他の手法に比べてHard methodが圧倒的に性能が高いことが実験から分かりました.
感想
論文の提案手法,学習にとても時間がかかります. 最小のデータ分割数であるk=2でも合計エポック数は2(k)x30(epoch)x10=600回ほどで,これに制約付きビタビによるラベル付け等の時間も加わるので大体一日半くらい学習にはかかりました.Softだと多分更に学習時間が増えるはずです. ただ,Oタグ無しかつ5割の固有表現が欠損していてもF値が81%を超えるというのは凄いと思いました.(加えてHardは殆どLSTM-CRFを使い回せるので実装が意外と楽です.)
また論文やブログではCoNLL-2003のデータセットに対して固有表現をランダムに欠損を生じさせましたが,これが大きく性能を左右させるのでモデルのパラメータ等を揃えて実験を行っても性能を再現させるのが難しいような気がします.