11

我目前正在使用 Python 中的 gensim 研究 word2vec 模型,并想编写一个函数来帮助我找到给定单词的反义词和同义词。例如: antonym("sad")="happy" synonym("upset")="enraged"

有没有办法在 word2vec 中做到这一点?

4

2 回答 2

9

在word2vec中你可以找到类比,如下方式

model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)

model.most_similar(positive=['good', 'sad'], negative=['bad'])
[(u'wonderful', 0.6414928436279297),
 (u'happy', 0.6154338121414185),
 (u'great', 0.5803680419921875),
 (u'nice', 0.5683973431587219),
 (u'saddening', 0.5588893294334412),
 (u'bittersweet', 0.5544661283493042),
 (u'glad', 0.5512036681175232),
 (u'fantastic', 0.5471092462539673),
 (u'proud', 0.530515193939209),
 (u'saddened', 0.5293528437614441)]

现在使用一些标准反义词,如(好,坏),(富,穷),找到多个这样的最近反义词列表。之后,您可以使用此列表的向量的平均值。

于 2015-08-05T06:16:03.663 回答
0

我认为可以使用 king-men+women=queen 类比来获得反义词。这里的女王(国王的反义词和女性的同义词)是从 word2vec 训练模型返回的结果。假设有一个单词 X 及其同义词 Y。并且还有 Y 的反义词 Z。那么我们可以说 XY + Z = (X) 的反义词和 (Z) 的同义词。

于 2019-08-28T14:29:27.270 回答