himkt / survey

3 stars 0 forks source link

[Reading] Multi-grained Named Entity Recognition #3

Open himkt opened 5 years ago

himkt commented 5 years ago

Multi-grained Named Entity Recognition

himkt commented 5 years ago

一言で

ネストを許した entity 構造が文に含まれるような状況下での NER が可能なモデルの提案.

概要

既存の NER の手法の多くはエンティティの overlapping がない状況を想定している. NER の研究でおそらくもっとも実験に使われている CoNLL 2003 コーパスにはエンティティの overlapping は存在しないが, ACE 2004/2005 コーパスに含まれるエンティティの 40% 以上はネスト構造を形成している. 以下はネスト構造の例.

Screen Shot 2019-09-11 at 23 08 16

このようなタスクを直接解ける手法として, MGNER (Multi-Grained Named Entity Recognizer?) を提案した. MGNER は NER を列挙と分類の2段階の処理に分割しており,それぞれの処理を行う 2 種類のモデルから構成される. 具体的には,文が入力された際に (i) エンティティを形成する span の候補を列挙し, その中からエンティティ候補として妥当なものとそうではないものを分類する. その後, (ii) 得られた span に対して NE カテゴリを予測する. (i) の処理を行うモデルを Detector , (ii) の処理を行うモデルを Classifier と呼んでいる.

MGNER のモデル構成を示す.

Screen Shot 2019-09-11 at 23 31 23

Detector は Word Processor, Sentence Processor, Detection Network から構成される. Classifier は Word Processor, Entity Processor, Classification Network から構成される. Word Processor は Detector/Classifier 間で共通である.

Detector

Word Processor

Word Processor は単語特徴量を3種類の方法で抽出する. 1種類目は学習済みの分散表現で,GloVe [Pennington+, 2014] が使われている. 2種類目は文字特徴量で,文字分散表現を BiLSTM に入力して得られるもの. 3種類目は品詞の埋め込み.品詞の埋め込みを特徴量に使うのめずらしい気がする. これらを concat したものが単語特徴量であり, Word Processor の出力である.

Sentence Processor

単語特徴を BiLSTM に入力して得られた出力と, ELMo [Peters+, 2018] の出力を concat したものが文特徴量であり, Sentence Processor の出力である.

Detection Network

Detection Network は文特徴量に基づいて span の候補を列挙する. span の列挙アルゴリズムの挙動を以下に示す.

Screen Shot 2019-09-11 at 23 43 33

文中の単語の位置に対して,後ろ->前に交互に窓幅を広げていくことで候補を列挙する. 例えば,文中の3番目の単語に着目したときの span の候補は (t3), (t3, t4), (t2, t3, t4), (t2, t3, t4, t5), (t1, t2, t3, t4, t5), (t1, t2, t3, t4, t5, t6), ... となる. 窓幅を系列長まで広げていくことで全ての span の候補が列挙されるが,それは計算上現実的ではなく, 実際には max_length (R) がハイパーパラメータとして導入されている. ↑ の図は R=6 の際の例に相当し,実際に論文の実験も R=6 で行われている.

Detector のロスを示す.

Screen Shot 2019-09-11 at 23 48 12

s_k は k 番目の単語の r 番目の候補 span の Entity らしさを表すスコアである. ((t3), (t3, t4), (t2, t3, t4), (t2, t3, t4, t5), (t1, t2, t3, t4, t5), (t1, t2, t3, t4, t5, t6) における r=3 は (t2, t3, t4)) 位置によってはあり得ない候補を出力することもある (例. span が t0 を含む) が,そのような候補は破棄される.

この方法で学習を行うと Entity と non-Entity の比率が non-Entity 側に偏るため, 実際の学習では non-Entity 側の候補をダウンサンプリングしている.

Classifier

Classifier は得られた span に対してあらかじめ定められた NE カテゴリを予測する. 候補となる span は overlapping が許容されるため,ネスト構造を持つ NER にも対処できる. 一方で, MGNER でネスト構造を許さない NER を行う場合には追加の処理が必要になる.

ネスト構造を許さない一般の NER では, Detector は non-maximum suppression [Neubeck+, 2006] によってネスト構造を持たない span 候補の列挙を行う. アルゴリズムは比較的シンプルで,以下の (i) (ii) の処理を未処理の span 候補がなくなるまで続ける. (i) 確率がもっとも高くなるような span を1つ選択し, (ii) 選択された span に矛盾する span 候補を除去する

カテゴリ予測のアルゴリズムがわかったところで,Classifier の特徴抽出モジュールについて詳しくみていく.

Word Processor

これは Detector の Word Processor と共通なので省略.

Entity Processor

span に含まれる単語列の単語特徴を BiLSTM に入力する.得られた各時刻の隠れ層の重みと ELMo の出力を concat する. これをさらに Entity LSTM (BiLSTM) に入力し (????) ,順方向・逆方向の最終時刻の隠れ層の重みベクトルを取得して concat する. これが Entity Representation となる. Entity Representation と Detector で得られた Sentence Representation を使ってアテンションの重みベクトルを作る. Sentence Representation を C = [c1, c2, ..., cN] として,以下のように計算する.

Screen Shot 2019-09-12 at 0 13 25

もうよくわからなくなってきたので誰か間違えてたら教えてください. 得られた Attention Weights を用いて C を重み付けする.

Screen Shot 2019-09-12 at 0 14 24

C は行列 (系列長 x 隠れ層の次元) で Attention Weights はベクトル (隠れ層の次元) になっているはずで,ブロードキャストが行われていると理解している.

得られた C_{att} をさらに BiLSTM に入力して順方向・逆方向の最終時刻の隠れ層の重みベクトルを取得して concat する.これで固定長の Context Representation (m) ができる. 最後に Entity Representation と Contxt Representation を concat する.これが Entity Processor の出力となる.

Classification Network

Entity Processor の出力を2層の全結合層に入力し,ソフトマックスをとる. 得られたベクトル p を各カテゴリへの所属確率とみなして以下のようなロス関数を最適化する. ロス関数は↓ のような max-margin ロス.

Screen Shot 2019-09-12 at 0 26 44

実験データ

ネスト構造を含む問題設定として ACE-2004, ACE-2005 [Doddington+, 2004], ネスト構造を含まない問題設定のデータとして CoNLL-2003 [Sang+, 2003] で実験を行なっている.

実験結果

ACE で SoTA , CoNLL でも ELMo ベースの LSTM-CRF を上回る性能を発揮した.

Screen Shot 2019-09-12 at 0 31 54 Screen Shot 2019-09-12 at 0 32 05

コメント

いまのところ今年読んだ中で一番複雑だった. 固定長のベクトルを取るために BiLSTM に入力する,という処理が各コンポーネントで使われているが, 単純な pooling では性能が出ないのか気になる. (モデル全体の学習に非常に多くの時間がかかりそうに見えるため)