食べログで新宿のラーメン屋さんを分類(khcoder、doc2vecで類似度分析2)
- zuhiro
- 2019年4月25日
- 読了時間: 3分
前回、食べログの「新宿駅周辺>ラーメン屋」
の口コミをスクレイピングしてdoc2vecで類似度分析をしてみましたが、
いまいちうまくいきませんでした。

KH-Coderの結果とdoc2vecの結果が全くちがった結果となっていたので、
doc2vecのやり方になんらかのミスがあったことが
見て取れる結果でした。
少し試しながら調べてみたところ、
下記の点が大きく誤っていた点でした、、
恥ずかしながら、、、
・doc2vecでモデルを作る際、
[[文書1の単語1,文書1の単語2、…][文書2の単語1,文書2の単語2…]、…]
というような形のデータを入れなければいけないところ、
シンプルに
[文書1の単語1,文書1の単語2,…,文書2の単語1,文書2の単語2,…文書3の単語1,…]
というように、
リストの入れ子のような形にせずに、単純なリストの形にしたものを
そのままモデルにぶちこんでしまっていたこと
・分析対象となる口コミのテキスト(1店舗につき1ファイル)を、
分かち書きせずに変数に入れ、そうして作った変数の中身同士の類似度を
算出してしまっていたこと。
よって、1要素のみのリストとして各口コミデータを渡していたことに
なってしまっていた。
…という、大変初歩的かと思われるミスでした。
改めて出してみた結果。

それに対して、KH-Coderの結果が下記です。

いくつかのお店について見てみます。
●満来

「ほりうち」や「風雲児」とは
KH-Coderのグラフで見ても非常に近く、
共通する結果が得られました。
●風雲児

KH-Coderでも
「麺屋武蔵」は「風雲児」と非常に近く、
共通する結果が得られたものの、
同じように近い「凪」がdoc2vecで遠い数値になっていることは
疑問が残ります。
最も近い類似度になっている2店舗は
うまく抽出できているものの、
Doc2vecでの類似度の値が0.7あたりを切ると、
KH-Coderの結果とは乖離がみられるようです。
単語の集計方法に違いがあるので、
許容範囲ではあるのかなと思っています。
最も遠い店舗同士も、
だいたいうまく抽出できているようです。
続いて、
doc2vec上で「最も近い類似度だった店舗同士」が
「どういう特徴のもとで近くなっているのか」
を見てみようと思います。
この調査にあたっては、
【1】全口コミの中から、頻出する単語の上位のものを抽出。
【2】その中でも、お店の味など特徴を表しそうな言葉を20個ほど選抜。
【3】その20個の言葉が、それぞれの店舗でいくつずつ登場するかを集計。
今回選抜した、いわば「お店の特徴語」22個は、
塩 魚 海老 出汁 鶏 細 魚介 辛い 多い
チャーシュー 量 濃い 濃厚 肉 油 豚
煮干 醤油 メンマ 太 味噌 ワンタン
です。

上述で出ていた似ている店舗同士の集計結果を見てみます。
●「満来」と「ほりうち」

→チャーシューや食事の量、醤油ラーメンやメンマの語が多いなど、
かなり似ている傾向にあることがわかります。
●「風雲児」と「麺屋武蔵」

→風雲児は濃厚という言葉が再頻出なのに対し、
麺屋武蔵は魚介が再頻出、
風雲児に多く登場する鶏という単語は
麺屋武蔵にはほとんど登場しない、
など多少の傾向の違いはありますが、
上位の10語のランキングを見ると、共通する部分も多いことがわかります。
「魚介」「チャーシュー」「醤油」「濃厚」「太麺」
が特徴を表すキーワードとなっているようです。
やっとdoc2vecをまともに使えた感じがします…笑
類似度を数値化できることの強みは、ここからの応用範囲にあると思うので、
どんな面白いことができるか、
今後試していきたいです。
Comments