以前、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)
('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)]
('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
0.7241737772341008
model.similarity('girl', 'man')
0.5909513153759105
0.5909513153759105
model.similarity('girl', 'car')
0.3104395996944153
0.3104395996944153
model.similarity('bus', 'car')
0.4575850326652785
0.4575850326652785