まず、トピック別の色付けの図を見ますと、同じ色同士の曲が固まっていないことが分かります。
個人的には、「あなた」は「君」に近いが「オマエ」は「最高」という結果が出た際には、テンション上がりました。, さて、今後についてなのですがコメントに「アーティスト別比較」をやって欲しいと多数意見を頂きしたが、実はこちらを既に着々と進めておりました。 しかし「オマエ」は「最高」らしいです。, Wikipediaを用いて学習したモデル*7など、いわゆる一般的なコーパスで学習されたモデルは数多く公開されていますが、このようなモデルを用いると「オマエ」は「君」に近くなることが予想されます。 ブログを報告する, 前回は、esa API とPandocを使って、Shiny上でesa記事をWordとP…, 本記事は、Shiny Advent Calendar 2017の7日目の記事です。 Shi…, 「OK word2vec !
このように、文脈を考慮したWord 2 Vecを用いた本modelはなかなかの完成度であることが推測できます。, 本題に戻り、曲のマッピングを行います。 * 「翼」は「Banzai」に近いらしいが、「Banzai」という曲に「翼」という単語出ていないので、意味的に近いとWord 2 Vecが学習したのは興味深い。, Word 2 Vecでは単語をベクトルで表現していることで単語同士の足し算・引き算ができます。これの代表的な例として・・・, 「奥さん」ー「彼女」で彼女から奥さんにランクアップするには?を分析した例 (こちらとても高評価頂いております。ありがとうございます!!), 上のリンク先でも書きましたが、簡単にまとめると、word2vecを使うことで単語の意味をベクトル表現化することができます。 "マジ卍"という言葉の意味はコトバンクによると、, うれしさや悲しさといった感情や、かわいさや調子の良さなどの状態を表す言葉。SNS(ソーシャル・ネットワーキング・サービス)などインターネットを中心に広がった。「まじ」は「本気」、「卍」は「やばい」を意味すると推測されているもののルーツは定かではなく、用法や使用される場面は曖昧。, う〜ん、なんとも曖昧な言葉ですね…笑
| このように単語の文脈を考慮したWord 2 Vecは非常に強力なモデルであることがLDAとの比較でも再確認できました。, 次に発売年で色付けした図を見ますと、古い曲(青や緑)は一定の箇所に固まっており一方、最近の曲(オレンジや赤)は散らばっていることが分かります。 結果、「泣いて泣いて泣きやんだら」から見た類似度ランキングで「パーフェクトライフ」は約70位とそこまで類似度は高くないとの結果が得られました。加えて、上位には「ONE」「ONE」「傷心」が出現し、(個人的に)意味的にも似ている曲が上位にきていると思います。 今回は、曲ごとに出現する単語の平均ベクトルを特徴量(100次元)とします。, t-SNEを用いて圧縮したものを可視化するコードはTF-IDF編と同様なのでご参照ください。, ちなみにLDA編で「「泣いて泣いて泣きやんだら」と「パーフェクトライフ」の類似度が高いと出ているが曲の意味は一切違う」とのコメントを頂いたのでWord 2 Vecの特徴量を用いて類似度を測ってみました。 ここでは、LDA編で得られた所属トピック別に色をつけた図と、発売年別に色をつけた図の2つを示させて頂きます。, Word 2 Vecを特徴量とした曲のマッピング(LDAの所属トピックで色付け)Word 2 Vecを特徴量とした曲のマッピング(発売年で色付け), 今回もいい感じですね。 その後、"マジ卍"で文書を一旦分割してあげて、分かち書き後の単語と"マジ卍"をリストに追加するようにしています。, また、node.feature.startswith()で、単語の品詞を指定をしており、今回は名詞と形容詞のみを使っています。
Python3からMeCabを使う
延々と上記コードを走らせて、分析に使うツイートデータ数は60万近く今回取得しました。, PythonでMeCabを使うには以下の3つのステップが必要です。(ステップ2はなくてもいい), MeCab導入に関しては、参考になる記事が既に多く出回っているので、例えば以下記事等を参考に環境をセットアップしてみてください。 www.randpy.tokyo, Np-Urさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog word2vecって何??という方は、こちらの記事を一読してから本記事に入って頂くといいかと思います。 まだまだ改良の余地ありそうです。, なかなかカオスですね。ただ卍という言葉自体が抽象度の高い表現なので、これはこれである意味正解な気がしてきました。, なお、可視化コード含めて、今回のコードは以下のgithubにあげております。 "マジ卍"の意味を教えて」 Pythonでword2vec実践してみた, "https://stream.twitter.com/1.1/statuses/sample.json?language=ja", RとPythonでMeCabを使う環境構築(Windows, Mac) - データ解析備忘録, gensim: models.word2vec – Deep learning with word2vec, テンプレートを使って esa 記事からオリジナルのWordファイル生成するShinyアプリケーション…, esa API と R Shiny + Pandoc でWordやPDFファイルを自動生成するツール…, word2vec(Skip-Gram Model)の仕組みを恐らく日本一簡潔にまとめてみたつもり, 【Shiny100本ノック No.4】Google Data Studio的な機能+PowerPointでダウンロードできるアプリを作る, テンプレートを使って esa 記事からオリジナルのWordファイル生成するShinyアプリケーション作り, esa API と R Shiny + Pandoc でWordやPDFファイルを自動生成するツールを作ってみました, mecab-python3のインストール(PythonでMeCabを動かすのに必要です). このことから、LDAで得られたトピックはWord 2 Vecを用いた特徴量と相関性が弱いということが伺えます。 こうして、分かち書きした文書を一旦テキストファイルに保存してあげれば下準備は終了です。, word2vec.LineSenteceで先程保存した分かち書きした文書を読み込みます。, word2vecの学習の際のオプションに関しては、以下公式サイトを参考にしてみてください。 Word2Vecの使い方 今回はPythonのgensimというライブラリを用いてWord2Vecを使います。 必要なライブラリ ・gensim ・mecab-python3 まずは、Word2Vecのモデルを生成するための学習データを用意します。今回はTwitterから「お兄 * 「世界」は「歌」。。。カッコイイ。。。でも事件笑 ツイートデータ整形コードは以下を参考にさせてもらいました。正規表現に慣れていないので本当に助かります。