部分的アノテーションが利用可能な固有表現抽出モデル Fuzzy-LSTM-CRFの実装
概要
固有表現タスクにおいて重要な役割を持つCRF(条件付き確率場)ですが,CRFでは全ての単語に対してラベルが付けられている必要があるため,アノテーションコストが高くなる傾向があります.そこで,今回は部分的アノテーションコーパスを利用可能な固有表現抽出モデルFuzzy-LSTM-CRFを実装し,その性能について実験してみました.
CRFとFuzzy CRF
まず通常のCRFとFuzzy CRF(Partial CRF)の違いについて説明します.
通常のCRFでは,系列に対応するラベル列
の確率
が最大になるように学習を行います.
この確率は系列に対応するラベル列
のスコアを
と定義すると以下のように定義されます.

損失関数は上式から対数を取った

となり,これが最大になるように学習を行うのが通常のCRFです.
しかし,この損失関数ではラベル列に少しでも欠損があると学習を行うことが出来ません.そこでFuzzy CRFでは欠損しているラベルに対して取りうる全ての経路
について計算をすることで学習を行います.

以上のように損失関数を定義することでラベル列が不完全であっても学習を行うことが可能になります.ちなみにラベル列が完全のときはCRFと同じ損失関数を持ちます.
下の論文にて解説,定義されています.
- Learning Named Entity Tagger using Domain-Specific Dictionary
- Training Conditional Random Fields Using Incomplete Annotations
BiLSTM-CRF
Word embeddingsとCharacters embeddingsをBi-LSTMに投入します.その出力を更にCRFに投入し最適なラベル列を探索することで固有表現抽出を行うモデルです.
Neural Architectures for Named Entity Recognitionより引用
今回はこのモデルをベースとし,欠損したデータを学習出来るようにCRFの代わりにFuzzy CRFを適用させました.
実装
PyTorchにてFuzzy-LSTM-CRFとLSTM-CRFの実装を行っています.
評価
データセット
今回はCoNLL2003の英語コーパスから各タグについて50%づつラベルを欠損させて学習を行いました.欠損させた結果は以下の通りです.
TYPE:O, before 169578, after 84790 TYPE:ORG, before 6321, after 3161 TYPE:MISC, before 3438, after 1720 TYPE:PER, before 6600, after 3301 TYPE:LOC, before 7140, after 3571
結果
- Word embedding dim: 100
- Character embedding dim: 25
- エポック数: 50
以上のハイパーパラメータにて学習を行いました.
precision recall f1-score support PER 0.93029 0.88312 0.90609 1617 LOC 0.89381 0.88309 0.88842 1668 ORG 0.84442 0.81036 0.82704 1661 MISC 0.68154 0.80484 0.73808 702 micro avg 0.85837 0.85198 0.85516 5648 macro avg 0.86335 0.85198 0.85674 5648
欠損ラベルなしでLSTM-CRFを学習した場合は以下の通りになりました.
precision recall f1-score support PER 0.95997 0.94929 0.95460 1617 LOC 0.90504 0.93705 0.92077 1668 ORG 0.89223 0.85731 0.87442 1661 MISC 0.80056 0.81197 0.80622 702 micro avg 0.90380 0.90156 0.90268 5648 macro avg 0.90401 0.90156 0.90259 5648
フルアノテーションと比べても,そこまで抽出性能が劣化していないことがわかります.
参考
実装の際には以下の論文とリポジトリを参考にさせていただきました.