A survey of named entity recognition and classification

David Nadeau, Satoshi Sekine

サーベイ論文。
分野を知らない人にとっては、サーベイ論文ほど助かる論文はない。
もっと定期的にサーベイ論文が出るといいですね。


1991年から2006年をまとめた論文。
1991〜1995年まではヒューリスティックス中心。
1996年にワークショップ(的なイベント)開催。MUC-06。
それから、HUB-4、MET-2、IREX(知ってる!)、CONLL(知ってる!)、HAREM、LREC(知ってる!)と開催。

タスクの説明は省略

2006年以降のトレンドは教師あり、半教師あり学習
教師あり学習は、Hidden Markov Models (HMM) から始まり、Decision TreesやMaximum Entropy Models、Support Vector Machines、そしてConditional Random Fieldsとすすむ。
※現在はConditional Random FieldsがMajorな手法

教師あり学習が流行ったのは、ひとえにアノテーション作業の手間ゆえ。
Bootstrappingでアノテーションデータを増やすことが大きな目的。

教師なし学習は、クラスタリング
これは、「同じ品詞を持つ単語は周辺の単語が似てるでしょ」って仮定のもとになりたっている。


学習素性(NEの場合)

単語レベルの特徴系

先頭文字がCapitalizationかどうか
すべてUppercaseかどうか
UpeercaseとLowercaseのMixかどうか

ピリオドでおわるか
ピリオドが間に入るか
アポストロフィが入るか
ハイフンかアンパーサンドがあるか

数字のパターン(日付形式、などなど)
Cardinal Number
Ordinal Number
Roman Number
数字が含まれる単語かどうか

possessive mark(所有形ってことかな)
一人称代名詞
Greek letters

prefix
suffix
単数形
stem
Common ending (ishとかistとか)

proper name
verb
noun
foreign word

Alpha(フィルタ、アルファベットだけ通過)
non-alpha(フィルタ、アルファベット以外通過)
n-gram
lowercase
uppercase version
pattern(文字種に変換、大文字or小文字or数字or記号orなどなど)
summarized pattern(文字種に変換、ただし同じ文字種はまとめる)
文字長
フレーズ長


辞書参照系

辞書 (gazetteer?とかlexiconとかontologyとか)
ストップワード
Capitalized noun (Januaryとか)
Common abbreviation

Entity(Organizationとか)

Entityの特徴
 organizationでよく用いられる語
 person title, name prefix, post-nominal letters
 locationでよく用いられる語, cardinal point


文書やコーパスの特徴系

テキスト中の別の単語(正規化みたいなもん)
UppercasedとLowercasedの共起
Anaphora
Coreferrenceとalias

Enumeration
Apposition
センテンスでの場所、段落での場所、文書での場所

URI
Email header
XML section
箇条書きかどうか
番号付きリストかどうか

単語またはフレーズの頻度
共起
複合語(選別する)



あとは精度についてチラホラ。
かなり訳が大雑把になってしまった。
素性について詳細に書いてあるのは助かる。
それも大雑把に書いたから、実際に論文を閲覧してチェックしなおす必要がある。

Part-of-Speech Tagging for Twitter: Annotation, Features, and Experiments

ACL2011
Kevin Gimpel, Nathan Schneider, Brendan O'Connor, Dispanjan Das, Daniel Mills, Jacob Eisenstein, Michael Heilman, Dani Yogatama, Jeffrey Flanigan, Noah A. Smith


共著者多すぎ。
Twitterを対象としたPOS Tagging。精度は90%。データセット公開してるらしい。
http://www.ark.cs.cmu.edu/TweetNLP


POS大系はPenn Treebank。
追加でURLやHashtag、@ユーザ名、感情(たぶん顔文字)、非公式RT

英語圏のツイート限定でデータを集め、Twitter TokenizerとStanford Taggerヒューリスティックスによりある程度自動でタグをつけておく。
それから17人の研究者でタグ付け開始。
2人ペアでつけたタグを比較し、agreement rate 92.2%、Cohen's k value 0.914。


Tag Set
HashTagは#tagnameで表されるのだが、いくつかの例で#がなくてもHashTagに分類できるものがある。
調査の結果、148個の#なしHashTagが見つかった。なかにはMulti Wordも。
※なかなかに定義の難しいことしてるな・・・

あと、省略形。たとえば"ima"は"i'm gonna"。
これはこれで新しくTagを設計。
{nominal, proper nou} x {verb, possessive}の組み合わせで表される4つのタグ。

タグは全部で25種類。
24種類で抑え切れない、分類できないものはGというタグをつけた。


識別はCRF。素性は
word type、 数値かハイフンを含むかどうか、suffixの文字(3字まで)、Capitalization pattern。
※たぶん、従来で使われる素性ももちろん入れてるとおもわれる。

追加で、
at-mention、hashtagなどTwitter specificな素性
よくcapitalizedされる単語かどうか
従来使われるタグ辞書
音素的な正規化

精度は89%前後。
Stanford Taggerが85%前後。

課題としてはproper noun。
やはりCapitalizationは重要な素性で、Twitterでは文法的に正しい使われ方をしていないことがあり、うまく取れない。
あとはmiscellanneous category (G) に分類したもの。
※結果見る限りでは、proper noun + possessive (Z) も相当悪い。


少し読み飛ばしたが、素性自体は比較的普通。
でも、アノテーションがおもしろい。アノテーションつけるのはかなり難しいと思うけど、一致率高いな。

もしかしたら一致したところはStanford TaggerがつけたPOSかも。
失敗するようなところってのはStanford Taggerでも2割程度。
人の手で修正して一致するのはその内の1割。
残りの1割は人でも判断できない難しい問題なのかも。
そこをうまく大系づけることが今後のミッションかな。
言葉って明確に分類できなかったりして難しい。

Named Entity Recognition in Tweets: An Experimental Study

ACL2011
Alan Ritter, Sam Clark, Mausam and Oren Etzioni

Twitterを対象としたNER。
POS TaggingとChunking込み。

Twitterを解析する上で大きく2つ課題がある。
1点目 データスパースネス
企業名や商品名、バンド、映画などなど、新語はたくさんでるけど、コーパス内に頻出するとは限らない。
2点目 140字制限
短い。故に色々欠落してる。背景知識とか。


提案手法
POS Tagging
従来手法でもけっこー高い精度がでる。
Brownコーパスで0.9くらい。同様の設定のTwitterデータで0.76。
精度の下がる原因は、構文的な問題というよりOut Of Vocabularyが大きい。
spellのvaliationによるところも多いが、NNPがOOVの1/3を占める(らしい)。

Stanford TaggerだとTwitterデータで0.8くらい。
Stanford TaggerはPenn Treebankで学習しているらしい。
TwitterだとCapitalizationが強調のために用いられていたり、主語なしでつぶやかれていたり、などなど。

提案手法では、Twitterデータに対してPenn TreeBankと同様の仕様のアノテーションをした。
追加で、ユーザ名、ハッシュタグ、URL、RT。
OOV対策として、Jclusterでprefixの4,8,12bitでクラスタリングした結果を使った。
※おもしろそう
POS TaggerはCRF。

上記の実装で26% error reductionできた。
IRC chat dataにもアノテーションを施し、学習を補強。Penn TreeBankのデータも使うと、最終的に41% error reduction、精度は0.883。
改善幅が大きいのがinterjectionとverb。Stanford Taggerではnounに分類されていた。
※やっぱりアノテーション済みデータがあればよくなる。他に工夫しようはないのか?

Chunking
やっぱりアノテーション。CoNLL shared taskの仕様に準拠。
追加でCoNLLのデータも学習に追加
※というかほとんどCoNLLデータになってしまった。
実装はCRF。
これで22% error reductionできた。

Capitalization
Named Entity Recognitionで強いキーになっていた要素。
Twitterでは強調の意図で使われることも多いため、素性として微妙になってしまった。
そこで、InfomativeなCapitalizationを見つける識別器を作った。
文頭かどうかとか、他にCapitalizeされたEntityがあるかとかをチェック。素性にする。
識別器はSVM
素性は、Capitarizeされた単語の一部、辞書でlowercase/capitalizedで登録されているが実際にlowercase/capitalizedじゃない単語の一部、Iが何回lowercaseで現れたか、文頭でかつcapitalizedされているかどうか。
※他にもあるかもしれない。あと、訳が間違ってるかも。

これらを総合的に組み合わせたCRFが最終的な成果物。
Stanford NERがF値0.44、提案手法はF値0.67
※もっと!もっと精度がほしい!


Infrequent WordはそれでもNERに失敗する。
そこで、FreebaseのOntologyを使い、未知語の前後の単語を集めて、品詞を推定する。LabeledLDAを使う。
素性はBag of Words。
アルゴリズムは省略。数学的なのでめんどう。

Named Entity Clasificationの精度は、DL-CotrainがF値0.53、提案手法がF値0.66
※最初のCRFで作ったNERとの関係は?


作ったプログラムは下記で入手可能。
http://github.com/aritter/twitter_nlp


おもしろい部分もあった。いい論文。
でも、やっぱりアノテーションをつけたCRFがいいのか。
それじゃつまんないんだよな。

構文・照応・評価情報つきブログコーパスの構築

橋本力, 黒橋禎夫, 河原大輔, 新里圭司, 永田昌明


黒橋研で構築したブログコーパスアノテーション付き)。通称KNB
不明瞭な文境界、括弧表現、誤字、方言、顔文字などに対応。
ブログ記事は大学生81名に「京都観光」「携帯電話」「スポーツ」「グルメ」のテーマで作成。
※作成させたからか、本来のブログ的表現ではない印象。
※既存のブログ記事では著作権的に難しかった?
※研究室のメンバーの個人的なブログを使ってもよかったかも(個人的には絶対イヤだけど)
※また、Twitterとも大きく異なる印象。
249記事、4186文のデータ。
※できれば1000倍くらいデータが欲しい。
日本語話し言葉コーパス(CSJ)に類似した仕様。

形態論的制約を用いたオンライン未知語獲得

村脇有吾, 黒橋禎夫

JUMANの未知語対応。
JUMANは、いくつかの崩れた表現にも対応している。

オンライン学習の考え方に近い形で実現。
(オンラインって言葉には、いつも違和感を感じる)
つまり、未知語を見つけたら逐次辞書を更新する、というもの。

未知語の同定は、ヒューリスティクス
カタカナ語に特化している気がする。
未知語を同定し、未知語前後の文字列により品詞を同定する。
※「nグラム統計によるコーパスからの未知語抽出」に近い

逐次辞書を更新するため、かなりPrecision重視にチューニングする必要がある。
終了条件(品詞同定)は2つ。
前方境界の妥当性チェック。これは、前方に句読点などの境界マーカーが出現するかどうかをスコアリングし、設定した閾値以上が条件。
活用型の異なり数チェック。これは、特定のパターンだけ頻出するわけではなく、品詞にあった活用型をある程度網羅しているかをチェック。


単語によっては、例えば「楽し-い」と「楽し-む」のような品詞の衝突を起こす場合がある。
しかし、その衝突が同一テキストで起こるということは稀だと考え、特に考慮しない。
提案手法はテキストを逐次的に解析するため、同じ文字列で複数の品詞が逐次的に登録される。

当然、獲得済みの形態素が獲得した形態素によって分割できる場合がある。
チェックは、まず既存形態素辞書のうち部分文字列で新形態素を含むものを見つける。
ある場合、当該形態素を辞書から削除し、新形態素を辞書登録した上で、当該形態素形態素解析する。
形態素によって分割が起こらなければ、当該形態素も辞書に残す。
※少し、違和感がある。ほぼ分割されうるのではないか?


課題
字種が混在する形態素は難しい。(「ドジっ娘」「シャ乱Q」など)
登録済みの形態素異表記もあった(「すごい」⇔「スゴい」、「解かる」⇔」「解る」など)
過分割(「アブラハム」→「アブラ」と「ハム」)
ひらがな表記の未知語は曖昧性が高く、困難。



これも中々に直感的。ただ、課題も多い。
ひらがな表記の未知語が困難だ、という論文が続いたが、どれくらい出現するんだろう。

nグラム統計によるコーパスからの未知語抽出

情報処理学会論文誌, Vol.39, No.7, July 1998
森信介, 長尾眞

Nグラム統計モデルを使って未知語周辺の情報から未知語の品詞を推定。
未知語はJUMANで取得。
NグラムモデルはEDRコーパス利用。


実験
EDRコーパス日経サイエンスを対象
未知語は以下の品詞を対象とした
サ変名詞
・非サ変名詞
※名詞全般ってこと?
・ラ行五段活用動詞
・形容詞
・形容動詞
また、2文字以上、頻度10回以上、括弧を含まない文字列のみ
ひらがなのみの文字列は対象外

実験結果
EDRコーパスの実験より、精度はたぶんF値で60%くらい?
日経サイエンスの実験より、よくわからないが、未知語を268個抽出した。

この未知語を辞書登録し、形態素解析の精度の変化を見る。
形態素解析は単純マルコフモデルEDRコーパスで学習。
精度は、95.9%から98.2%に改善。
※未知語の抽出を厳しくしたならば、日経サイエンスから得られた未知語を辞書登録して日経サイエンス形態素解析結果がよくなるのは直感的。


課題
・ひらがなのみの文字列を失敗する
・形容動詞と名詞の識別が困難


直感的な手法なのでもっとうまくいくかと思ったが、案外よくならないようだ。
日本語って難しい。

日本語話し言葉コーパスの形態素解析

内元清貴, 野畑周, 山田篤, 関根聡, 井佐原均


日本語話し言葉コーパスアノテーションを半教師あり学習で行う。
形態素解析は最大エントロピー(ME)モデル。


実験
アノテーション済みのコーパスを学習とテストに分ける。
今回、フィラーや言いよどみは対象としない。
ただし、フィラーや言いよどみがあったことは素性として利用した。(表層は使わない)

素性
形態素(ひとつ前まで見る)
・部分文字列(先頭1文字、2文字、末尾1文字、2文字)
・辞書(辞書にある品詞)
・品詞(CSJの品詞)
・長さ(文字列の長さ)
・文字種(漢字、ひらがな、など)
・境界(文節区切りか否か)
・組(素性の組み合わせ)※カーネルトリック的なもの?

精度
形態素区切り単体でみると、97%前後
Out Of Vocabularyは短文で1.66%、長文で5.81%
失敗した例はほとんどOOV。

形態素区切りと品詞付与の精度は、95%前後
Out Of Vocabularyは短文で2.54%、長文で6.93%
※なぜOOVが増えたのか?


アノテーションさえすれば精度よくとれる。
Twitter等の口語的表現をどの程度おさえることができるのか?