Joint Inference of Named Entity Recognition and Normalization for Tweets

ACL2012

Xiaohua Liu, Ming Zhou, Furu Wei, Zhongyang Fu, Xiangyang Zhou
Harbin Institute of Technology, Microsoft Research Asia, and others

Named Entity Recognition (NER)とNamed Entity Normalization (NEN)に関する論文。
Twitterはリアルタイムの情報量が多いので、新しい情報源として注目されている。

この論文では、
PERSON,ORGANIZATION,PRODUCT,LOCATION
以上の4つのNEを抽出し、その代表表記に置換する手法を紹介している。
精度は、NERがF値80.2%〜83.6%、NENがF値79.4%〜82.6%と高い結果が出ている。

従来研究についても詳しく紹介されているが、省略。

本手法の特徴は、NERとNENを複数のTweetを使って相補的にモデルを作る点である。

例えば、あるTweetの"Alex"と別のTweetの"Alex Russo"がNERシステムによりPERSONと認識できれば、NENシステムが"Alex"を"Alex Russo"に正規化できる。

逆に、あるTweetの"burger king"が別のTweetの"Burger King"にNENシステムが正規化できなかったら、NERシステムはそれぞれに別々のNEを割り振れる。


提案手法は、BILOUスキーマとlinear chain CRFで実装している。
i番目のTweetのm番目の単語y^i_mと、j番目のTweetのn番目の単語y^j_nが同じEntityかどうかという変数z^ij_mnがある。
skip-chain CRFs (Galley, 2006)とは、正規化変数z^ij_mnがあるという点で異なる。


正規化変数z^ij_mnについて
同じEntityで、かつ同じLemmaだったら1となる。
例えば、あるTweetの"Gaga"がPERSONかつlemmaが"gaga"、別のTweetの"gaga"がPERSONかつlemmaが"gaga"なら、これらの正規化変数z=1。
ただし、stop wordに設定されているものは、対象外とする。
※stop wordは論文を参照のこと。

さて、正規化変数zが設定できたものについて、NEのまとめあげを行う。
上の例では、"Gaga"と"gaga"がともにPERSONでlemmaが"gaga"だった。
BILOUタグで上の例がそれぞれ"Lady Gaga"と"laaady gaga"だったとすると、"gaga"の一致から、これらは正規化しうるペアと見なせる。
同様に他の例でもペアを作っていき、「A=BかつB=CゆえにA=C」ということをやる。
そしてできた正規化候補集合の中で、もっとも出現回数が多い表現を標準表現とし、他の表現を標準表現に正規化する。
標準表現になりうる表現が複数ある場合は、Wikipediaのエントリーを採用。
※それでも複数ある場合はランダムに決める。


NER+NENの最適化については論文を参照のこと。
※たぶんME。


外部辞書を使う
WikipediaやFreebaseなどから35億語の辞書を構築。
その辞書内語と一致する語が現れた場合、可能な限りのEntityを付与する。
たとえば、"new york"という単語が現れた場合、辞書には"New York City"と"New York Times"が登録されいるため、この"new york"にはORGANIZATIONとLOCATIONのタグが付与される。


正規化変数zの条件を緩める
単語y^i_mと単語y^j_nのlemmaが完全に一致する場合のみ、z=1だった。
これに下記ルールを適用する。
1. 単語y^i_mと単語y^j_nが同じハッシュタグを持つときz=1。
2. Tweet^iとTweet^jの単語ベクトルの類似度が0.8より大きいときz=1。
3. Tweet^iとTweet^jの単語ベクトルの類似度が0.3より小さいときz=-1。


特徴ベクトル
1. Orthographic features
capitalizedなのか、upper caseなのか。
alphanumericなのか、slashを含むのか。
stop wordなのか。
prefixは?suffixは?

2. Lexical features
t^i_mとt^i-1_mとt^i+1_mのlemma。
t^i_mがOOVかどうか。
t^i_mとt^i-1_mとt^i+1_mのPOS。
t^i_mがハッシュタグかどうか。リンクかどうか。ユーザー名かどうか。

3. Gazetter-related features
※よくわからない。
外部辞書を参照して追加した語の有無。
外部辞書を参照して追加された最も多いタイプなのか。
外部辞書を参照して追加された最も多い単語なのか。


※もうひとつFeature Setがあるけど、めんどうなので省略。


評価では、テストデータを作成している。
2245Tweetに対してアノテーションを施し、2人のアノテーターでカッパー値0.72。

lemmaはOpenNLPを使用して取得。
POSはRitterらが作ったPOSタガーから取得。

結果は前述のとおり高い精度。
比較対象が筆者らの前の手法。それも結構高い。

エラーを解析したところ、
スラングや短縮表現に弱い」
ということがわかった。
これは、lemmaを利用しているため、lemmaを計算出来ないような対象に弱いことを意味している。

例えば"California"と"Cali"。
後者は人名にもなりうる。

また、省略形が一般的に使われるようなもの。
例えば"Windows 7"と"Win7"。後者のほうが一般的に用いられているようだ。


※まだ読み込めていない。
※NERとNENを相互に最適化するというのは非常におもしろい。だが、複数のTweetを使うという点で、ものすごいコストの高い手法なのではないか。また、実験結果では示されていたが、相互に最適化したところで精度が本当にあがるのか疑問。