Sentiment AnalysisのVADER論文を読んだ
ちゃお・・・†
まいおり・・・†
今回はNLTKに採用されたVADERの論文について紹介しようと思います。
VADERって?
ICWSM-14で提案されたsentiment analysisの手法。
- Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014.
- http://comp.social.gatech.edu/papers/icwsm14.vader.hutto.pdf
以下の特長があるようです。
- ソーシャルメディアに出てくるようなテキストに強い
- 学習データがいらない
- True/False の2値じゃなくて0.0-1.0の範囲で程度を表す
- ストリーミングデータに対応できるくらい早い
- スピードと精度のトレードオフを考えなくてもいい
評価実験では4200ツイートの極性判定でF1値が0.96とのこと。
どんな風にして作られたかざっくり書いてみます。
1. 収録語彙の候補を集める
さまざまな言語資源から収録語彙を収集。
- sentiment word bank
- LWC
- ANEW
- GI
- 顔文字
- https://en.wikipedia.org/wiki/List_of_emoticons
- Acronym
- https://en.wikipedia.org/wiki/List_of_acronyms
- インターネットスラング
- http://www.internetslang.com
全部で9000くらいになるらしい
2. 人手でスコアリング
Amazon Mechanical Turk (AMT) で人を募って、語のpositive/negativeの度合い[-4, +4]をレーティングする。
このとき、AMTを使うにあたって品質コントロールのためにいろいろやってる。
- 大学レベル以上の英語読解能力の人に絞る
- 事前にsentiment ratingのトレーニングなどを受けさせる
- あらかじめ分布を計算した特定の語 (golden items) よりかけ離れたレートをつける人のデータは使わない
- 大多数の人が選んだレートと一致してたら報酬を与える
こうしてレーティングされた結果から無効な語彙をカット。
結果、7500語が残ったそう
3. sentiment intensityの特徴をみつける
1.と2.でやったのはpositive/negativeの度合いで、 今度はネガポジ関係ない感情的な強さを示す特徴をみつける。
1万ツイート中からpattern.enのpositive/negativeのスコアが高い順に400ずつツイートを抽出。
人間が各ツイートの強さをレーティングしてそれを分析して5つの特徴を使うことにしている。
- 感嘆符 (!) の数
- 全て大文字で書いてる語 (greatをGREATって書いたり)
- 程度を表す語 (extreamyとかpartlyとか)
- "but" の後の文は極性をシフトする
- tri-gram (cut the mustardとか)