ACL2015のshort paper.@mhagiwaraさんのtweetで紹介されていたので読んでみた.

概要

“Drunk Texting”という,いわゆる酔った状態で書かれた文章かどうかを自動分類しようという論文.Twitterのハッシュタグを元にデータセットを作成し,n-gramやその他の素性を元にSVMで分類器を作成.最終的に人間の正答率68.8%のところを自動分類で64%程度到達できた.

背景と問題設定

言うまでもなく,酒を飲んだ状態では理性が効かなくなってあとあと後悔することがある.例えばGmailでは算数の問題を解かないとメールを送れないという飲酒による意図せぬ行動を抑止する機能があるが,ユーザがその機能を使うことを事前に設定しておかなければならない.もしテキストを入力中に飲酒かどうかを自動判別できたらいいよねというのがこの論文のモチベーション.与えられたテキストが,酒を飲んだ状態で書かれたかシラフの状態で書かれたかを分類する(Drunk or Sober).

データセットの作成

今回はTwitterのハッシュタグを用いてラベル付けを行う.#drunkや#drank,#imdrunkのハッシュタグが付与されたツイートを酒飲み状態でのツイート,#notdrunkや#imnotdrunk,#soberをシラフ状態でのツイートとする.その中でハイパーリンクが含まれているものや6単語より短いテキストなどは取り除き,当然ながらハッシュタグはテキストから削除してデータを作成する.3種類のデータセット(1,2,H)を作成しているが,詳細は省略.

素性の作成と分類器の評価方法

今回はn-gram素性と文体の素性の2種類を用意する.n-gram素性は単純にunigramとbigram.文体の素性は論文のTable 1に挙げられている通り,品詞の割合であったり,スペルミスがあるかどうか,”happpy”のように必要以上の文字の繰り返しが含まれている単語があるかどうか,ツイート中の大文字の数やツイートの長さ,絵文字の有無,感情分析のpos/negの比率などを使用している.

これらの素性を元にSVMを使って分類し,5-foldクロスバリデーションによって評価した.評価項目は正答率(Accuracy),正負の適合率(Positive/Negative Precision),正負の再現率(Positive/Negative Recall)の5つ.

結果

データセット1ではn-gram素性を用いた分類器が,データセット2ではすべての素性を使った分類器が最も高い正答率を示した.しかしながら,全体的に見てn-gram素性だけで十分な性能を示し,むしろ文体の素性を使うと正答率が下がるという結果となった.

また,人間によるアノテーションと分類器の比較も行った.データセットHに対して,人間側は3人のアノテーターが個別に分類し,一方分類器はデータセット1または2で学習したモデルで分類を行った.結果は人間側の正答率が68.8%,分類器の正答率は64%と,人間の正答率に近い分類性能を示した.

感想

やりたいことは明解でやっていることも単純,結果もはっきりと出ていて面白い一方で,データセットや手法に関して気になる部分が幾つかある.

まずはそもそもデータセットの信頼度的な部分.今回はハッシュタグで酒飲み状態で書かれたかどうかを判別しているが,論文の6.3エラー分析でも考察されているように,ハッシュタグによるラベル付けが上手く行ってない場合がある.加えて,そもそも人間だったらちゃんと判別できるのかという意味で,3人のアノテーターによる手動分類のCohen’s Kappa(κ係数)が0.3から0.4と,人によって判定がまちまちで合意が取れないケースが多い印象を受ける.この状態で人間の正答率に近い結果が出たと言われても,若干怪しさが残る.もちろん6.3.1のようにラベルミスのケースで分類器が本当は正しい結果を返しているというのもあるので一概に信頼できないとはいえないのが難しい所だが…….

あとは,文体の素性がほとんど意味なかったというのが少し不思議な感じがした.色々と考えて作られたであろう素性が効き目なしどころか正答率が下がる要因にもなっているのがなんとも厳しい.いわゆるCooooooooooooooollllllllllllll!!!!!!!!!!!!!!(論文)みたいなのが効きそうな印象を受けたが,そう上手くはいかないようだ.

参考