Recognizing Named Entities in Tweets

ACL2011
Xiaohua Liu, Shaodian Zhang, Furu Wei, Ming Zhow

Twitterから半教師あり学習で固有表現を抽出する。
K-Nearest Neighbors (KNN)とConditional Random Fields (CRF)を組み合わせた手法。

普通はアノテーション済みのコーパスをCRFとかHMMとかで学習する。
従来手法はNewsとかで学習するため、TwitterやBLOGなどの砕けた表現や医療文書などの特定の分野では、精度が落ちることが知られている。
CoNLL03のShared Taskでは、従来手法の精度が90.8%から45.8%まで低下したらしい。

この論文でNamed Entitiy Recognition (NER) は、PRODUCTとかPERSONとかの特定までを含んでいる。もちろんChunkingも。
よくわからないが、ChunkingとPOS TaggingをBILOU (Beginning, the Inside and the Last tokens of multi-token chunks as well as Unit-length chunks) の枠組みでやるようだ。

KNNは、ある単語の周辺 N-gram を使って単語ベクトルを作成し、cos距離の近いもののPOSをつける、という手法になっている。
英語は分かち書き済みなので、各単語の分離は容易。よって日本語では、いたちごっこになるため、手法の適用は少し難しいかもしれない。
論文では N=5 でやってるのかな?

CRFは、説明するのが面倒なので省略。系列を解くモデル。
論文ではCRF++を使っているようだ。
素性は、"Annotating and recognising named entities in clinical notes"(未読)と"Design challenges and misconceptions in named entity recognition"(未読)と類似しているらしい。
素性のひとつであるGazetters related featuresってなんだ?

あとは、stop wordを除去する。
ここでは、(激レア語も除去するだろうけど)頻出語を除去する。
あとは表現の正規化。URLなんかを *LINK* に置き換えたり。ただし、Hash tagだけは普通の素性として扱っている。

精度は、大体80%くらい?
Stanford Parserは、そのままでもかなりいい精度を持っているようだ(75%くらい)。

Error Analysis
例えば、"I love Cali so much"の"Cali"が"Cali(人名)"なのか"California"なのか分からないという点。
あとはData Sparseness。
あとは表記ゆれ(的なもの)。"wesley snipes ws cought 4 nt payin tax coz ths celebz dnt take it cirus"とか。省略しすぎ。


素性的な参考にはなった。
アルゴリズムは新しくはないね。