レビュー解析 箸休め

別件でPython2.7を使うことになりました。
普段は、邪道と言われようとPython3.3を使用している自分には
utf-8、shift-jis、cp932等の文字コードを意識しないといけないので苦しんでます。
¥(半角)・波ダッシュ・全角チルダ・全角スペース この4文字が親の敵のように思えてきました。

 

さて、本題。
タイトル通り、今回はコレ!って結果は・・・出ていません。

1.満足度分布

Dyson Digital Slim DC62(モーターヘッド、コンプリート)、125件のレビューの満足度分布です。


いつもの感じの棒グラフ。
これをバブルグラフにしてみました(本来の使い方からは外れています)。


自分のエクセル能力では横軸の値を文字に変えることが出来ませんでした。
左から、デザイン 使いやすさ パワー 静音性 サイズ 手入れ 取り回し 満足 になっています。

これだとパッと見て、DC62の弱いところが分かりますね。静音性と手入れのようです。
CMで強調しているパワーの満足度は概ね5・・・流石です。

もしかしたら、以前の記事で書いていたかもしれませんが。
グラフを変えると、ここまで印象が変わるということが興味深かったので・・・。

2.係り受け解析

日本語は難しいです。
以前、形態素解析(単語に別ち書き)を行いました。例えば、
『母の料理を食べたあと、素晴らしい温泉に入りました。』
という文だと
母/の/料理/を/食べ/た/あと/、/素晴らしい/温泉/に/入り/まし/た。
と区切ります。

これをレビュー文に行って、どの単語が多いかを計測していました。
しかし、この方法だと
『母 素晴らしい』『素晴らしい 料理』
といった、文章の流れとは異なる意味の組み合わせも考えられてしまいます。
これではイカン。

そこで係り受け解析です。
母の→料理を
料理を→食べた
食べた→あと
あと→入りました
素晴らしい→温泉
温泉に→入りました
のような流れで、どの言葉が繋がっているかを解析できます。

これを掃除機のレビューに行います。

まずは満足度の分布。1~5(不満~満足)。
大部分が満足しており、5(満足)を付けたレビューは2000件近くあります。

掃除機なので「音」が含まれる単語の組み合わせを調べます。

満足度1 満足度2 満足度3 満足度4 満足度5
音 うるさい 4
音 す 3
す 爆音 2
ない 音 2
大きな 音 2
音 する 2
音 てい 2
騒音 ある 2
あと 音 1
うるさい 音 1
音 うるさい 7
ない 音 4
掃除機 音 4
音 大きい 3
この 音 2
モーター 音 2
大きな 音 2
爆音 す 2
音 す 2
高音 異常 2
音 うるさい 9
音 す 7
音 大きい 7
音 思い 5
ない 音 4
静音性 す 3
音 ある 3
音 した 3
音 すね 3
音 する 3
音 大きい 37
音 す 31
音 うるさい 30
音 する 22
音 思い 21
音 なり 18
音 静か 18
音 ない 17
ない 音 15
騒音 す 11
音 す 87
音 大きい 60
音 静か 45
音 うるさい 38
音 ない 36
音 なり 34
音 する 33
音 思い 27
大きな 音 20
ない 音 19

「音 す」というのは「音がする」だと思われます。集計のため全て終止形に戻しています。

満足度5のレビュー数が満足度1の10倍以上なので、正確な比較ではありませんが
満足度が上がるほど、音と組み合わさる単語に「静か」といったポジティブなものが増え、
逆に、満足度が下がると、「騒音」「爆音」といったネガティブなものが増えています。

 

反省点として
今回は単純に単語と単語の繋がりを見ているので、
「音 うるさい」が「音がうるさい」のか「音がうるさくない」のかは区別していません。
否定の意味を持つ単語を上手く処理すればこれは解決できると思います。

3.bag-of-wordsの簡易版

「ハッカーと画家」を読んでいたら、『スパムへの対策』という項目がありました。
ベイズの定理を使うとのことで、非常に興味深いものでした。
が、統計学を勉強中の自分には早すぎました。
そこで、その前の段階のbag-of-wordsをまずモノにしようと思います。

bag-of-wordsとは、単語の並び方は考えず、文章に単語が含まれるかどうかのみを統計する方法です。
単語の詰まった袋とは上手く名付けたものです。

まずは、価格.comの掃除機のレビュー投稿文を、価格毎にグループ分けします。
各レビュー投稿文で「”紙パック”が含まれる」「”サイクロン”が含まれる」を調べ、
2つの単語の出現確率を折れ線グラフにしました。

5万円台の製品を買った時のレビュー投稿文では
紙パック、サイクロンが両方とも文章に含まれる確率 0.024
紙パックが文章に含まれる確率 0.082
サイクロンが文章に含まれる確率 0.100
どちらも文章に含まれない確率 0.792
となります。

意外とレビュー文で集じん方式は明記されないようですね。
紙パックは1万円台を山に、低下しています。
サイクロンは3万円台が山のようです。
キャニスター式のサイクロン掃除機の相場が3万円台なのが影響なのでしょうか?

確率変数を”紙パック”が含まれる場合はX、”サイクロン”が含まれる場合はYとすると
以下の表の様に計算出来ました。

p(Y=0|X=1)は、X=1の状態のY=0の確率。
“紙パック”がレビュー文に含まれている時に、”サイクロン”がレビュー文に含まれていない確率になります。

  p(Y=1|X=1) p(Y=0|X=1) p(Y=1|X=0) p(Y=0|X=0)
1万円以下
1万円台
2万円台
3万円台
4万円台
5万円台
6万円以上
0.477
0.503
0.474
0.581
0.546
0.296
0.769
0.658
0.397
0.563
0.617
0.593
0.758
0.643
0.094
0.220
0.148
0.114
0.110
0.065
0.029
0.906
0.780
0.852
0.886
0.890
0.935
0.971

ここから”紙パック”が文章に含まれていたほうが、
“サイクロン”が文章に含まれる確率は高くなることが分かります。

・・・・・・書いてみてなんですけど、当たり前の結果でした。
『紙パックからサイクロン式に買い替えましたが~』
『紙パックと違ってサイクロン掃除機は~』
というレビューが多いわけですから。

もう少し複雑な計算式か、フィルターをする言葉を上手く選ばないと・・・道は長い。