単語分散表現 | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

以前、word2vec青空文庫を使って単語の分散をTensorBoardで確認しました

今回は、Kerasを用いるため間にgensimを挟む形でword2vecを使用します

(Kerasはword2vecをサポートしていないそうです)

今回は日本語ではなく、英語の分散表現を確認します

値が大きいほど類似度が高いことを意味します

 

model.most_similar('woman')
2018-10-29 20:42:39,210 : INFO : precomputing L2-norms of word weight vectors
[('child', 0.7418578863143921),
 ('girl', 0.7241737842559814),
 ('lady', 0.675082802772522),

 ('man', 0.662395715713501),
 ('lover', 0.6373087763786316),
 ('prostitute', 0.6306676864624023),   # 失礼な言葉です
 ('herself', 0.61330246925354),
 ('mother', 0.596755862236023),
 ('baby', 0.5961505174636841),
 ('daughter', 0.5949742794036865)]

 
model.most_similar(positive=['woman', 'king'], negative=['man'], topn=10)
[('queen', 0.6249727606773376),
('throne', 0.5462108850479126),     # 国王、王座
('daughter', 0.5453882217407227),

('elizabeth', 0.5398316383361816),
('prince', 0.5381389260292053),
('husband', 0.5173758268356323),
('monarch', 0.5160138607025146),   # 帝王、王、女王、皇帝
('empress', 0.5153043270111084),   # 女帝、皇后
('son', 0.512975811958313),
('emperor', 0.5085870027542114)]
 
model.similarity('girl', 'woman')
0.7241737772341008
model.similarity('girl', 'man')
0.5909513153759105
model.similarity('girl', 'car')
0.3104395996944153
model.similarity('bus', 'car')
0.4575850326652785