【Python】word2vecとクラスタリングでwikiコーパスを使って遊ぶ

word2vecは単語を分散表現化する技術です。

単語を分散表現にしてどんなことができるか、みたいなところを実際に触ってみて体感しようということで、今回いろいろと遊んでみました。

まずはword2vec学習済みモデルを入手する

 

wikiをコーパスにしてやると時間が大変かかるため、こちらを使わせていただくことにしました。

word2vecの学習済み日本語モデルを公開します

ありがとうございます。

モデルをダウンロードしたら、

gensimを用いてロードします。

各単語の分散表現は、以下のように取得することができます。

今回お借りしたモデルは、50次元の分散表現のようですね。

 

よく見かけるやつ

word2vecの紹介記事でよく見かける、類似単語の表示や、単語の足し算引き算をまずは試してみようと思います。

most_similarメソッドで類似単語を出力することができます。

単語の足し算引き算は、引数にpositive,negativeを設定することで可能です。

 

きちんと分類されるか?‐階層型クラスタリング

「東京」「沖縄」「福岡」

「晴天」「雨」「曇」

「日本」「アメリカ」「中国」

「みかん」「ぶどう」「りんご」

この12単語の分散表現をクラスタリングしてみようと思います。

可視化する際に、日本語の単語なのでフォントを指定してあげる必要があるのでご注意ください。

む、沖縄が国のクラスタに紛れ込んでしまいましたね。かつて琉球王国だったのを引きづっているのでしょうか。

ちなみにウォード法ではなく群平均法でやるとそこもうまく分けてくれました。

 

きちんと分類されるか?‐非階層型クラスタリング

クラスタリングの勉強もかねて、なのでKmeansもやってみようと思います。

ばっちりですね!

 

最後までよんでいただきありがとうございました!