Amazonのレビューですが、1728件のレビューが取得できました。 なんかデータの不具合があまりも多くて前処理(主にコンマの処理)で泣きそうだったのですが、なんとか読み込めました。
とりあえず学習
とりあえずword2vecで学習させました。センターと入力するとこんな感じになります。
word2vecの説明はこちら。
dailytextmining.hatenablog.com
model.most_similar("センター")
[('優子', 0.7802525758743286), ('ゆ', 0.7613364458084106), ('前田', 0.7600348591804504), ('さん', 0.736564040184021), ('ゆき', 0.7352813482284546), ('渡辺', 0.7113367319107056), ('篠田', 0.7061018943786621), ('敦子', 0.6999825239181519), ('優紀', 0.6963295340538025), ('マイク', 0.694685697555542)]
センターでみてみると大島優子の方が前田敦子より出てきます。 センターになった回数でいうと前田敦子の方が圧倒的に多いですが、レビュー数でみるとそこまで極端に負けてもいないので、センターになった回数が少ない分、大島優子の方が話題に上がることが多いんでしょうね。
センターになった回数(複数センターも含めて)
前田敦子がセンター曲のレビュー数
- 会いたかった 23件
- 言い訳Maybe 38件
- ポニーテールとシュシュ 81件
- フライングゲット 112件
- 真夏のSounds good ! 129件
大島優子がセンター曲のレビュー数
- ヘビーローテーション 126件
- ギンガムチェック 56件
- 前しかむかねぇ 16件
- UZA 49件
- さよならクロール 29件
それでは曲の方もみていきます。まずは名曲と入力してみます。
model.most_similar("名曲")
[('作品', 0.7805891036987305), ('思い出', 0.6867567896842957), ('さらなる', 0.684403657913208), ('季節', 0.6754779815673828), ('cool', 0.6640548706054688), ('ぶり', 0.663932204246521), ('さすが', 0.6636984348297119), ('おすすめ', 0.6614989042282104), ('バラード', 0.6546747088432312), ('最高', 0.6485679149627686)]
曲名が出てこないですね。今のままですとそもそも曲名が辞書に登録されていないので、出力されるわけがないですね。MeCabの辞書に曲を追加していきます。辞書の登録の仕方はこちらでやりました。
2018/7/10【18日目前半】MeCabに辞書を登録する
dailytextmining.hatenablog.com
それと、レビューですと当然ですが、「この曲は」とか「今までで一番の曲」といったように、曲名がわからないものがあります。なので、曲名がわかるようにタイトルとレビュータイトルをくっ付けてしましたいと思います。
こんな感じ(タイトルはテキストエディタで置換しました)です。
print((train["song_title"][2])+train["review_title"][2]+(example.get_text()))
会いたかったこの曲が一番好きですAKBの曲、もう何曲も出ているけど、原点であるこの曲が一番好きです。 #元のレビュー #AKBの曲、もう何曲も出ているけど、原点であるこの曲が一番好きです。
かなり良さげになりました。 関数も書き直します。
def text_to_vec(song_title, reviw_title, raw_text): tweet_text = BeautifulSoup(raw_text, "lxml").get_text() letters_only = re.sub("(https?)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)", " ", tweet_text) all_text = song_title + reviw_title + letters_only mecab = tagger.parse(all_text) words = mecab.lower().split() return(words)
これでもう一度、学習し直します。
model.most_similar("名曲")
[('作品', 0.8430494070053101), ('diva', 0.8392430543899536), ('思い出', 0.831322431564331), ('翼はいらない', 0.831229567527771), ('ストレート', 0.8210798501968384), ('背中', 0.8144763708114624), ('偏見', 0.8110009431838989), ('玲奈', 0.8055139780044556), ('バラード', 0.800865650177002), ('会いたかった', 0.800559937953949)]
- ('翼はいらない', 0.831229567527771),
- ('会いたかった', 0.800559937953949)]
の2曲が名曲として出てきました。
それでは、名曲の上となる神曲はどうでしょうか?
model.most_similar("神")
[('river', 0.8973854780197144), ('そのもの', 0.8895211815834045), ('風は吹いている', 0.889178454875946), ('ポニーテールとシュシュ', 0.8870421648025513), ('時計', 0.8821254968643188), ('表題', 0.8791835308074951), ('良', 0.8672671914100647), ('強がり', 0.8662034273147583), ('心のプラカード', 0.8661544322967529), ('らしい', 0.857416033744812)]
- ('river', 0.8973854780197144)
- ('風は吹いている', 0.889178454875946)
- ('ポニーテールとシュシュ', 0.8870421648025513)
- ('心のプラカード', 0.8661544322967529)
の4曲が神曲として出力されました。
意外ですね。てっきり、恋するフォーチュンクッキーや365日の紙飛行機が入ってくるかと思いましたが、これらは名曲と呼んでいる人は少ないのかもしれませんね。個別にみてみます。
model.most_similar("恋するフォーチュンクッキー")
[('プラス', 0.8465442061424255), ('館', 0.8344211578369141), ('快挙', 0.8325627446174622), ('号', 0.8271607160568237), ('music', 0.8268901109695435), ('収め', 0.8205280900001526), ('ハイテンション', 0.8122432827949524), ('物凄く', 0.810246467590332), ('真夏', 0.806281566619873), ('名義', 0.8055335283279419)]
(名義ってなんだ。。。)
model.most_similar("365日の紙飛行機")
[('釣り', 0.8331804275512695), ('唇', 0.8098644614219666), ('懐かしく', 0.8057860732078552), ('名作', 0.7978659868240356), ('せっかく', 0.7806496620178223), ('売り切れ', 0.7798574566841125), ('芽', 0.7773637771606445), ('講座', 0.7764194011688232), ('baby', 0.7740527391433716), ('桜の栞', 0.7714337706565857)]
(こっちは名作!)
こんな感じでした。本当ならここで共起ネットワークを作ればいいのですが、なかなか手間がかかりそうなので、今日はここまでにします。
今日の結果
今日のAKBの呟きは51件でした。 新潟公演が終わったらしいです。出張公演ってやっているんですね。
{'嬉しい': 8, '楽しい': 7, '眠い': 3, '温かい': 3, 'いい': 3, '寒い': 2, '美味しい': 2, '優しい': 2, '良い': 2, 'すごい': 2, '多い': 2, '賢い': 1, 'やばい': 1, '欲しい': 1, '物凄い': 1, '有難い': 1, 'おいしい': 1, 'あやい': 1, '難しい': 1, '新しい': 1, '上手い': 1, '可愛い': 1, 'あたたかい': 1, 'ちっちゃい': 1} '公演': 41, '出張': 14, '回': 14, 'さん': 14, '新潟': 13, '劇場': 11, 'チームエー': 11, '今日': 10, '真子': 9, '生誕': 9, '祭': 9, '嬉しい': 8, '楽しい': 7, '彩': 7, '日': 7, '大好き': 7, 'ちゃん': 7, '黒': 6, '組': 6, 'ファン': 5, '夜': 5, '方': 5, '放送': 5, '公演': 41, 'てる': 22, 'する': 21, '出張': 14, '回': 14, 'さん': 14, '新潟': 13, '劇場': 11, 'チームエー': 11, '今日': 10, '真子': 9, '生誕': 9, '祭': 9, '嬉しい': 8, 'いる': 8, '楽しい': 7, '彩': 7, '日': 7, '大好き': 7, 'ちゃん': 7, 'くる': 7, 'くださる': 7, '寝る': 7, 'なる': 7,
ちなみに好きで入力したら、まゆゆだけが唯一入ってきました。
model.most_similar("好き")
[('大好き', 0.7712128162384033), ('最高', 0.7647926807403564), ('爽やか', 0.7458555102348328), ('的', 0.7421799898147583), ('セクシー', 0.7198798656463623), ('嫌い', 0.7031300067901611), ('可愛い', 0.697096049785614), ('まゆ', 0.6903289556503296), ('akb', 0.6642345190048218), ('カップリング', 0.6578464508056641)]