22
テキストマイニングで発掘!? 売上とユーザーレビューの相関分析 Shintaro TAKEMURA d.hatena.ne.jp/taos twitter.com/ stakemura facebook.com/ shintaro.takemura 第16回データマイニング+WEB @東京 ( #TokyoWebmining 16th)

テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

Embed Size (px)

DESCRIPTION

第16回データマイニング+WEB @東京 ( #TokyoWebmining 16th) 発表資料

Citation preview

Page 1: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

Shintaro TAKEMURA d.hatena.ne.jp/taos

twitter.com/stakemura facebook.com/shintaro.takemura

第16回データマイニング+WEB @東京 ( #TokyoWebmining 16th)

Page 2: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

テキストマイニングによる予測

• 2005年あたりからCGMのテキストマイニングによる売上・価格変動・選挙・株価予測が盛んに

– [Mishne 05] Predicting Movie Sales from Blogger Sentiment

– [Archak 07] Show me the Money! Deriving the Pricing Power of Product Features by Mining Consumer Reviews

– [Liu 07] ARSA: A Sentiment-Aware Model for Predicting Sales Performance Using Blogs

– [Tumasjan 10] Predicting Elections withTwitter

– [Bolle 10] Twitter mood predicts the stock market

– [Zhang 10] Predicting Stock Market Indicators Through Twitter

• 要となるのが

– 評判分析(Sentiment Analysis)

Page 3: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

評判分析とは?

• ある対象の評価を記述しているテキスト 断片に対して,その評価極性を推定すること

– レストランAは味がよい → 肯定

– 喫茶Bのコーヒーはまずい → 否定

• レーティング(5段階評価)ではいけないの?

– (未掲載の)あるデータに基づき解説

• 低得点→あまり売れ無さそう

• 高得点→売れるとは限らない(様々なバイアスが)

– ニューヨーク大学の講義資料の紹介

• SpongeBob Effect

• バイアスの問題をちゃんと分析している

Page 4: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

評判分析のアプローチ

• 商用ツールを活用する

– IBM SPSS Text Analytics for Survey

– Text Mining Studio

– TRUE TELLER

• OSSや言語資源を頼りに自作

– SentiWordNet

• Positive - Negative を数値化した評価表現辞書

• 日本語WordNetとの連携サンプルをGoogle Codeにて公開

sentiwordnet-converter

– WordNet-Affect

• 評価表現を6種の基本感情に分類

– anger, disgust, fear, joy, sadness, surprise.

Page 5: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

評判分析の課題

• すべてを自作するのは茨の道

– 特に構文解析や照応解析、レポート出力(可視化)

• 商用ツールは出来るだけ活用すべき。が課題もある

– 評価情報は、評価対象+評価表現で表される

• この ベッド は 眠気を誘う ⇒ 肯定

• この 講義 は 眠気を誘う ⇒ 否定

– 評価対象は実は分野(ドメイン)によって異なる

– 一方ツールが対応するのは一般的な表現でしかない

• コンピュータの力を借りよう

– 自然言語処理・機械学習の活用

– 辞書作成をなるべく自動化する

Page 6: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

具体的にどうするか?

• 既存のユーザーレビューから学習させる

– 教師あり機械学習

• 事前に与えられたデータをいわば「例題(=先生からの助言)」とみなして、それをガイドに学習(=データへの何らかのフィッティング)を行う

– 映画レビューでの分析が出発点

• [Pang et al. 2002] Thumbs up? sentiment classification using machine learning techniques

• 今回の実験ではこの論文の手法を検証する

– 評価表現辞書を組み合わせる手法は間に合わず…

– 採点済みのユーザーレビューを探そう

• 商品ならAmazonや楽天のAPIで検証するのも一つの手

Page 7: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

どこから着手する?

• 最初のミッション

– 非定型のテキストデータを数値の羅列に置き換える

• よく使われるものにTF-IDFがある

– 検索の分野で使われる道具が大いに役立つ

• スケーラビリティが熟慮されているため

• まずはLuceneから始めるのがお勧め

– Twitter, mixiなどで採用される検索エンジン。Java製。

– Solr/Nutchでスケーラブルなクローリング

– キーワード抽出はHadoop/Mahoutも有用

– 多言語対応の形態素解析も、OSS・商用含めて豊富

• Lucene GoSen (MeCabの辞書と互換性あり)

• Basis Technology - Rosette

Page 8: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

k k

ii

n

ntf

単語iの出現頻度

文書で出現する総単語数

TF - Term Frequency

• ある単語が各々の文章にどのくらい出現するか?

• 問題点

– すべての単語が等しい重要度の場合

• 例:ツール,エラー,ファイル…

• 解決方法

– 頻繁に登場する語の影響力を薄める → そこでidf

Page 9: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

|}:{|

||log

i

itdd

Didf

IDF - Inverse Document Frequency

総ドキュメント数

単語iを含む ドキュメント数

• ある単語がどのくらいの数の文書に出現するか?

レア語では高く

頻出語では低く

term df idf

car 18,165 1.65

auto 6723 2.08

insurance 19,241 1,62

best 35,235 1.5

Page 10: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

TF-IDFによるスコアリング

• 以下の場合に高い

– 少数のドキュメントにtがたくさん出現する場合

• 以下の場合に低い

– ひとつのドキュメントに t が少なく出現する場合

– たくさんのドキュメントに t が出現する場合

Page 11: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

ベクトル空間モデル(Vector Space Model)

• 文章を単語の集合(ベクトル)と考える

– cos類似度でランク付けできる

A B C D E

0 1.5 0.4

1 0.8

2 0.4 1.2 0.2

3 1.5

4 0.5

5 1.6 2.5

6 0.2 1.0

{A, B, E}

1.5

{D, E}

document

term

Q

0 1.0

1

2 0.1

3

4

5

6

term

Query

𝑠𝑖𝑚(𝑑1, 𝑑2) =𝑉(𝑑1) ∙ 𝑉(𝑑2)

𝑉 𝑑1 |𝑉(𝑑2)|

d

q

Page 12: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

PRP - Probability Ranking Principle

• 情報要求に対して確率論を当てはめるための考え方

– TF-IDFのようなヒューリスティクスな指標を確率モデルで再解釈できる

• 文書dとクエリqの適合性を確率として表現

– P(R|d,q) … これを求めたい

– Rはdとqが関連することを表す

– R=1 … 関連あり R=0 … 関連なし

– 文書をP(R|d,q)に従ってランキング

• メリット

– 適合性を適切に求めることで精度が上がる

• 研究もまだまださかん ex. BM25+[Yuanhua Lv, CIKM11]

Page 13: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

BIM - Binary Independence Model

• 仮定(本当は他にもいろいろ)

– 文章Dの適合性は、他の文書に依存しない

• P(R=1|D)によるランク付け

– R={0,1} … 適合度を示す確率変数

– 𝑁𝑅 𝑤 は各々のクラスでの観察回数

– D … 文章の中身。ベイズの定理より

• 𝑃 𝑅 𝐷 ∝ 𝑃 𝐷 𝑅 𝑃(𝑅)

• 文章Dの適合性を求めると…

– 関係演算子 ∼ を「ランク順位が等しい」として

𝑃 𝑅 = 1 𝐷 ∼𝑃 𝑅 = 1 𝐷

𝑃 𝑅 = 0 𝐷=

𝑁 −𝑁𝑤 + 0.5

𝑁𝑤 + 0.5𝑤∈𝐷∩𝑄

IDF

Page 14: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

文章分類の計算例(BIM)

• 適合文章: 𝐷1=“a b c b d”, 𝐷2=“a b e f b”, 𝑁1=2

• 不適合文章: 𝐷3=“b g c d”, 𝐷4=“b d e”, 𝐷5=“a b e g”, 𝑁0=3

• 新規文章: 𝐷6 = “b g h”

𝑃 𝑅 = 1 𝐷6 ∼ 𝑝𝑤 1 − 𝑞𝑤𝑞𝑤 1 − 𝑝𝑤

𝑤∈𝐷6

=

2.53∙ 1 −3.54…

3.54∙ 1 −2.53…=1.64

13.67

word a b c d e f g h

𝑁1 𝑤 2 2 1 1 1 1 0 0

𝑁0 𝑤 1 3 1 2 2 0 2 0

𝑝𝑤 2.5/3 2.5/3 1.5/3 1.5/3 1.5/3 1.5/3 0.5/3 0.5/3

𝑞𝑤 1.5/4 3.5/4 1.5/4 2.5/4 2.5/4 0.5/4 2.5/4 0.5/4

gh b

Page 15: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

文章検索の計算例(BIM)

• 文章: 𝐷1 = “a b c b d”, 𝐷2 = “a b e f b”, 𝐷3 = “b g c d”,

𝐷4 = “b d e”, 𝐷5 = “a b e g”, 𝐷6 = “b g h”, N=6

• クエリ: Q = “a c h” 文章𝐷1の場合

𝑃 𝑅 = 1 𝐷1 ∼ 𝑁−𝑁𝑤 + 0.5

𝑁𝑤 + 0.5𝑤∈𝐷1∩𝑄

=4.5

2.5∙4.5

2.5

• ランキング 𝐷6 > 𝐷1 > 𝐷3 = 𝐷5 > 𝐷2 = 𝐷4

word a b c d e f g h

𝑁 𝑤 2 6 2 3 3 1 3 1

𝑁 − 𝑁𝑤𝑁𝑤

4.5 /2.5

0.5 /6.5

4.5 /2.5

3.5 /3.5

3.5 /3.5

5.5 /1.5

3.5 /3.5

5.5 /1.5

a c

Page 16: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

BM25

• 概要(詳細は割愛)

– 𝑑𝑤を文章D内での単語wの出現回数とした場合

– 𝑃(𝑑𝑤)を2つのポワソン分布から成ると考える

𝑃 𝑑𝑤 = 𝑃 𝐸 = 1𝑒−𝜇1,𝑤𝜇1,𝑤

𝑑𝑤

𝑑𝑤!+ 𝑃(𝐸 = 0)

𝑒−𝜇0,𝑤𝜇0,𝑤𝑑𝑤

𝑑𝑤!

• 結果

log𝑃(𝑑|𝑅 = 1)

𝑃(𝑑|𝑅 = 0)≈ (

𝑑𝑤 ∙ (1 + 𝑘)

𝑑𝑤 + 𝑘( 1 − 𝑏 + 𝑏 ∙ 𝑛𝑑/𝑛𝑎𝑣𝑔× log𝑁

𝑁𝑤)

𝑤

文章長の平均

Page 17: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

文章検索の計算例(BM25)

• 文章: 𝐷1 = “a b c b d”, 𝐷2 = “a b e f b”, 𝐷3 = “b g c d”,

𝐷4 = “b d e”, 𝐷5 = “a b e g”, 𝐷6 = “b g h”, N=6

• クエリ: Q = “a c h”, 仮定 k=1, b=0.5

log𝑃 𝐷1 𝑅 = 1

𝑃 𝐷1 𝑅 = 0∼ 2 ×

1 ∙ (1 + 1)

1 + 1 ∙ (.5 + .5 ∙ 5/4)× log6 + 1

2 + .5

word a b c d e f g h

𝑁 𝑤 2 6 2 3 3 1 3 1

𝑁 − 𝑁𝑤𝑁𝑤

4.5 /2.5

0.5 /6.5

4.5 /2.5

3.5 /3.5

3.5 /3.5

5.5 /1.5

3.5 /3.5

5.5 /1.5

Page 18: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

評判分析の検証

• NLTKのmovie reivewコーパスで検証

– 肯定 1000件 否定 1000件 1件当たり4-10KBの英文

– そのうち75%を学習用、25%をテスト用に利用

– UnigramからQuadgramまで収集

• LuceneのShingleFilterと同等の処理

– 不要語(ストップワード)処理

• DF及びBM25の値が一定以下の素性を除去

– 単語のlemma化(NLTKのWordNetCorpusReader使用)

• 精度は十分でないがbigram以降の分類に効果あり

• Standard POS tagger (Java実装)で再挑戦したい

– Luceneにドライバあり

– Naive Bayesと最大エントロピー法で検証(NLTK使用)

Page 19: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

結果(評価)

• Naive Bayesと最大エントロピーによる評価

– DFが1 , BM25*IDFの値が1未満の素性を除く

• 結果

– 最大エントロピーの結果は安定している

– Ngramの活用により精度が向上

• だが閾値を誤ると悪化するケースも確認された

Naive Bayes Max. Entropy

Unigram 0.710 0.872

+Bigram 0.744 0.880

+Trigram 0.766 0.884

+Quadgram 0.772 0.888

Page 20: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

抽出した評価表現[1]

• Unigram

• 1.350 bad==1 and label is 'neg'

• 1.069 worst==1 and label is 'neg'

• 1.063 script==1 and label is 'neg'

• 0.957 great==1 and label is 'pos'

• 0.892 boring==1 and label is 'neg'

• 0.884 unfortunately==1 and label is 'neg'

• 0.879 should==1 and label is 'neg'

• 0.832 nothing==1 and label is 'neg'

• 0.828 waste==1 and label is 'neg'

• 0.828 supposed==1 and label is 'neg'

• 0.785 best==1 and label is 'pos‘

• 0.768 only==1 and label is 'neg'

Page 21: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

抽出した評価表現[2]

• Bigram

• 0.995 could_been==1 and label is 'neg'

• 0.953 one_best==1 and label is 'pos'

• 0.819 bad_movie==1 and label is 'neg'

• 0.757 going_waste==1 and label is 'neg'

• 0.754 waste_any==1 and label is 'neg'

• 0.743 man_who==1 and label is 'pos'

• 0.740 film_extraordinarily==1 and label is 'neg'

• 0.740 more_words==1 and label is 'neg'

• 0.740 horrendous_going==1 and label is 'neg'

• 0.740 extraordinarily_horrendous==1 and label is 'neg'

• 0.696 very_well==1 and label is 'pos'

• 0.686 too_bad==1 and label is 'neg'

Page 22: テキストマイニングで発掘!? 売上とユーザーレビューの相関分析

まとめ・課題

• まとめ

– [Pang et al. 2002] を検証してみた。精度約8割

– 今後の売上予測に生かしたい

• 課題

– 精度改善に向けて

• 評価表現辞書の併用

– SentiWordNetなどの仕込みをちゃんと生かす

• DF・BM25の閾値最適化

– 不要後処理に関する知見を強化

• 構文解析などより高度な自然言語処理の活用

– 速度改善に向けて

• Hadoopや、MahoutのCollocation抽出の活用