not good but great

プログラミング、アート、映画・本の感想について書きます。

AV作品のタイトルデータを元にword2vecを使って、「ちんちん - 男 + 女」の結果を見る

Machine Learning for Artists Advent Calendar 2016 - Qiita

こちらのAdvent Calendarの1日目になります。

DMM APIを用いて取得したAVタイトルデータを元にword2vecを使って、「ちんちん - 男 + 女」の結果を見てみましょう。

code

コードはこちらに置いておきました。データセットは各自用意しよう! https://github.com/naoyashiga/dmm-word2vec

word2vecの環境構築

こちらを用いました。anaconda3を使うとすぐに構築できました👍

danielfrg/word2vec: Python interface to Google word2vec

「ちんちん」に似ている単語は何?

ベクトルのコサイン類似度を計算して、単語同士の類似度を計算します。

indexes, metrics = model.cosine('ちんちん')
model.generate_response(indexes, metrics)
rec.array([('男子', 0.9861545179373172), ('字', 0.9848851283668705),
 ('キツ', 0.9841240400958484), ('急', 0.9825421829353408),
 ('谷間', 0.9825396943608381), ('いまだ', 0.9823301839097356),
 ('奪う', 0.9819839971161488), ('実家', 0.9816670202154381),
 ('すぐ', 0.9810211009078225), ('相談', 0.9809858803299966)], 
          dtype=[('word', '<U78'), ('metric', '<f8')])

「男子」という結果に。男子以外は微妙ですね。。。

「ちんちん - 男 + 女」

f:id:naoyashiga:20161112175628p:plain

[('捜査', 0.29095711064011665),
 ('囚われ', 0.2903398678674696),
 ('官', 0.28971248366345176),
 ('新任', 0.2873962495181514),
 ('芸人', 0.28661149679360853),
 ('美', 0.2852711412876362),
 ('熟', 0.28287569960461306),
 ('ハルナ', 0.28268530237630035),
 ('教師', 0.2820045767430891),
 ('タイトスカート', 0.28066625522870675)]

あまり結果に納得感がないです。。企画モノのタイトルから「捜査」が拾われたのでしょうか。

「チン - 男 + 女」

f:id:naoyashiga:20161112175601p:plain ちんちんではなく、短く「チン」に変えてみます。

[('尻', 0.22085438683701394),
 ('教師', 0.21264258242889073),
 ('熟', 0.2114356137079717),
 ('家庭', 0.20757195074212614),
 ('デカ', 0.20729663313883032),
 ('イケメン', 0.2058938267426101),
 ('疼く', 0.20170178655920107),
 ('欲求', 0.20150636945130818),
 ('不満', 0.20078146871654948),
 ('たち', 0.20046903571228172)]

「尻」という結果にw それっぽい結果になりました。

課題

データ量が少ない

今回は1万タイトルを用いました。もっとデータを増やしたほうが結果は良さそうです。

分かち書きがうまくいっていない

例えばデカチンという単語が「デカ チン」であったり「デ カチン」となったりしていました。俗語が多いと、仕方ないのかもしれません。

以上です。