Insertion, Deletion, or Substitution? Normalizing Text Messages without Pre-categorization nor Supervision

ACL2011
Fei Liu, Fuliang Weng, Bingqing Wang, Yang Liu

口語表現を文語表現に正規化する。
アノテーションデータを作らず、自動でwebから収集するらしい。


Edinburgh Twitter corpusには、400万語のout-of-vocabularyがあるらしい。
たとえば、"together"は"2gether","togetha","ththr"など。

従来手法
Noisy channel model
Noisy channel modelを使って、口語的表現から尤もらしい単語を見つける。
まず、口語的表現をカテゴライズする。
例えば、abbreviation、stylish variation?、prefix-clippingなど。
それから、カテゴリごとに学習する。

Hidden Markov Model
HMMでアノテーションデータを使って口語的表現を見つける。
※オーソドックスだと言える。

initial letter-to-ohine modelの拡張。

統計的機械翻訳


提案手法
acronyms("bbl"->"be back later")は扱わない。


口語的単語(OOV)と文語的単語の取得方法
OOVを含むツイートで、連続する語を"w1 w2 w3 OOV"か"OOV w1 w2 w3"でGoogle検索する。
OOVは一箇所でしか現れないってことはないので、本論文では6クエリ発行。
トップ32結果のスニペットを取得し、BOLD単語を収集。クエリで使った単語以外だけ、OOVの文語的単語候補として残す。
Google依存!?!?
あとは、コーパス上で現れる部分文字列がけっこー一致する単語も候補とする。
あとは、OOVに簡単なルールを適用して、復元できないか試す。(例えば、"1"->"one", "won"; "2"->"to", "two"など)
あとは、InternetSlang.comから932語追加した。

その後、学習データの追加、削除処理を行う。
たとえば、(w1,w2)と(w2,w3)が学習データにあった場合、(w1,w3)を追加する。
あと、文語的表現として抽出した単語がCMU辞書になかった場合、学習データを削除する。
(headed, heading)みたいなペアを削除するため、いくつかヒューリスティックスを適用して削除する。

上記のプロセスを経て、最終的に62907ペアのトレーニングデータを作成した。


Automatic Letter-level Alignment
まず、文語的単語と口語的単語の最長一致部分文字列を求める。
それから文字のChunkを見つける処理を行う。

Step1. many-to-0 ("birthday" -> "bday")
Step2. 0-to-many ("sandwich" -> "sandwhich")
Step3. many-to-many ("someone" -> "some1")

まだまだNoisyな学習データがあるため、
・口語的表現には数字が入っていることとする
・ただし、文語的単語か口語的単語の3文字以上をchunkしたペアは除く

ここからletter-levelのalignmentを取る。
ただし、各alignmentのTop5だけルールとして採用する。
例えば、1-to-2だと、"ck","ey","ie","ou","wh"とそのalignmentペアだけ採用する。

上記の処理で、298160のletter-levelのalignmentルールができた。
"e"->"_" (have, hav)
"er"->"a" (another, anotha)


Sequence Labeling Model
コーパスはできたので、あとは文字列情報を基に、CRFで置換することを考える。
素性は、
文字列N-gram
音素N-gram
Syllable-level features (The English hyphenation dictionary使用)


実験
学習データは6150TweetにAmazon Mechanical Turkで3〜6人にアノテーションしてもらった結果を統合。選定して3802Tokenがテストデータ。
読み飛ばしたが、だいたい精度は60%くらい。
従来手法はJazzy Spell Checkerで47%くらい。
従来手法と提案手法を組み合わせると、68%くらい。


データの集め方は面白い。
ただ、どれほど学習データが正解なのかはわからなかった。
そこが大事だと思うので、そこを明確にしてほしい。