top of page
検索
  • 執筆者の写真zuhiro

食べログをdoc2vec/word2vecで傾向分析

doc2vec、word2vecで遊んでみた、というネット記事を探すと

必ずいくつか出てくる、食べログの口コミ分析を

自分もやってみようと思います。



概要としては、

食べログで新宿駅周辺のラーメンカテゴリのお店を検索。

口コミ数が多い順に、20店舗の口コミをすべて

スクレイピングで取得し、

出てきたデータをdoc2vecにかけ、

お店ごとの類似度をマトリクスに。

いくつかのお店についてword2vecで

「ラーメン」と類似する語を拾ってみる、という内容です。


まずはseleniumを使って

Excelに食べログの口コミを取得。

件数が多いので、さすがにかなり時間がかかっていました…


次に、テキストファイルで

・全店舗の口コミデータを入れたもの

・店舗ごとの口コミデータを入れたもの

という計21ファイルを用意。


そして、doc2vecを使って

livedoorニュースのコーパス

をもとに学習モデルを作成し、

店舗×店舗のマトリクスにしました。


上記の表を多次元尺度構成法で

グラフ化したものが下記になります。

………均等に配置する仕様にしているため、

分布や特徴がわからないものになってしまっていますね。。

グラフの作り方は勉強していきたいです。


ちなみに、KH-Coderの対応分析では、

下記のようにグラフ化できました。

わかりやすいし、実用的……!!

やはり便利なツールですね。。


全店舗に関して、

店舗ごとのデータをもとに

word2vecでそれぞれのモデルを作成し、

各々の店舗についての口コミ内で

「ラーメン」と類似している語を調べました。


モデルの作成にあたっては、

全店舗の口コミを入れたテキストファイルから

名詞のみを取り出し、

全文書中0.5%以上の文書に含まれる

「ラーメン」以外の名詞をストップワードとして除外。

上記を除外しつつ、

各店舗の口コミデータから名詞のみを抽出して

学習モデルを作成しています。

※こちらの記事をおおいに参考にさせていただきました


doc2vecの表では

比較的類似度の高い店舗同士を

いくつか出してみると。

「麺屋武蔵」と「広州市場」

■麺屋武蔵

('高級', 0.6751776933670044)

('訳', 0.6238663196563721)

('牽引', 0.6214972138404846)

('屋', 0.6063766479492188)

('話', 0.5925773978233337)

('ランキング', 0.590250551700592)

('""', 0.580134391784668)

('ブーム', 0.5709309577941895)

('何処', 0.5672414302825928)

('変更', 0.5650632381439209)

('台', 0.5640077590942383)

('斬新', 0.5612761974334717)

('昨年', 0.5595489740371704)

('それなり', 0.5562080144882202)

('ご存知', 0.5548931360244751)

('界', 0.5541739463806152)

('♪"', 0.5530242919921875)

('有名', 0.5525781512260437)

('開発', 0.5523124933242798)

('大変', 0.5494943261146545)

('激戦', 0.5478038787841797)

('アパレル', 0.5327475070953369)

('基本', 0.5304334163665771)

('邪魔', 0.5298768281936646)

('点', 0.5282785892486572)

('検索', 0.5241826772689819)

('最大', 0.5216807126998901)

('立派', 0.5213924050331116)

('歴史', 0.5193395614624023)

('食べ物', 0.5183963775634766)


■広州市場

('感想', 0.5640458464622498)

('^', 0.5597258806228638)

('!」', 0.5540357828140259)

('屋', 0.5473955869674683)

('だらけ', 0.546172022819519)

('かなり', 0.539336085319519)

('あっさり', 0.5329233407974243)

('羽根', 0.5250654816627502)

('日本', 0.5161819458007812)

('綺麗', 0.5143599510192871)

('つき', 0.5044982433319092)

('先日', 0.49892139434814453)

('サラリーマン', 0.48383039236068726)

('少なめ', 0.4824727773666382)

('餃子', 0.46602681279182434)

('香港', 0.46557438373565674)

('オーソドックス', 0.4642433524131775)

('^^', 0.461040735244751)

('結果', 0.4564005732536316)

('普通', 0.4496247470378876)

('インパクト', 0.4375178813934326)

('jp', 0.4370163083076477)

('登場', 0.43593502044677734)

('レベル', 0.43273138999938965)

('イメージ', 0.4298677444458008)

('飽き', 0.4272305965423584)

('みんな', 0.4266369044780731)

('旦那', 0.42531701922416687)

('今度', 0.4213107228279114)

('胃', 0.4209365248680115)



「百日紅」と「一幻」

■百日紅

('便利', 0.6852896213531494)

('屋', 0.6467282176017761)

('十分', 0.600119411945343)

('蕎麦', 0.575397789478302)

('基本', 0.5738417506217957)

('あたり', 0.5699610114097595)

('時代', 0.5673542022705078)

('新店', 0.5493727922439575)

('有名', 0.5432511568069458)

('ススメ', 0.5365009903907776)

('極上', 0.5321621894836426)

('スペース', 0.521690845489502)

('間', 0.5024514198303223)

('残念', 0.5009560585021973)

('今', 0.4973641633987427)

('渋谷', 0.4876337945461273)

('点', 0.48032239079475403)

('素直', 0.47991812229156494)

('子', 0.4736443758010864)

('東京', 0.4720911681652069)

('ヒット', 0.465038001537323)

('階段', 0.46303749084472656)

('帰り', 0.4620363116264343)

('店舗', 0.4553033411502838)

('期間', 0.4411734938621521)

('番', 0.44087517261505127)

('チャレンジ', 0.43925121426582336)

('都', 0.4385284185409546)

('いくつ', 0.43705976009368896)

('ところ', 0.43484383821487427)


■一幻

('屋', 0.6155135631561279)

('♪"', 0.5752440690994263)

('どこ', 0.5524059534072876)

('関西', 0.550443708896637)

('?"', 0.5409088134765625)

('意見', 0.5380407571792603)

('好き', 0.534988284111023)

('ファン', 0.5300669074058533)

('終了', 0.5290800333023071)

('集中', 0.5248886346817017)

('上品', 0.5139515995979309)

('後味', 0.5108246803283691)

('カップラーメン', 0.510219395160675)

('エリア', 0.509642481803894)

('人気', 0.5082221031188965)

('身', 0.5041986703872681)

('系', 0.4923136532306671)

('色々', 0.49004095792770386)

('近く', 0.4813835322856903)

('新鮮', 0.4779902696609497)

('界隈', 0.4759187698364258)

('久しぶり', 0.4737393856048584)

('一つ', 0.4736025929450989)

('そちら', 0.4633566737174988)

('話題', 0.46304774284362793)

('どっち', 0.4601922631263733)

('モモンガ', 0.45665842294692993)

('毎日', 0.45635437965393066)

('創', 0.4525313973426819)

('型', 0.44916021823883057)


などとなっており、

それぞれのお店の特徴は出てくるものの、

word2vecで類似度の内訳を探るという目論見からは

だいぶ離れたものになってしまいました。


「ラーメン」というワードとの類似度を出すやり方がまずいのか、

そもそもword2vecはこういうことには向いていないのか、

モデルの作り方を改善すべきなのか…

閲覧数:149回0件のコメント

ラジオ、テキスト分析、テキストマイニング、KHCoder、word2vec

text_bunseki

bottom of page