繁体   English   中英

理解 gensim Word2Vec most_similar 结果为 3 个词

[英]Understanding gensim Word2Vec most_similar results for 3 words

我使用 3 个单词“1”、“2”、“3”以不同的方式构造句子,并观察到每个单词的词向量都没有变化。

以下是不同的句子

类型 1: [["1", "2"], ["1", "3"]]

类型 2: [["1", "2", "3"]]

类型 3: [["1", "2"], ["3"]]

我正在训练Word2Vec模型如下

model = Word2Vec(sentences,min_count=1,size=2)
print (model.wv.most_similar("1"))
print (model.wv.most_similar("2"))
print (model.wv.most_similar("3"))
print (model.wv['1'])
print (model.wv['2'])
print (model.wv['3'])

改变句子类型的结果是一样的

[('3', 0.5377859473228455), ('2', -0.5831003785133362)]
[('1', -0.5831003189086914), ('3', -0.9985027313232422)]
[('1', 0.5377858281135559), ('2', -0.9985026717185974)]
[-0.24893647 -0.24495095]
[ 0.19231372 -0.03319569]
[-0.22207274  0.05098101]

此外,当我将单词“1”更改为“101”时,结果会发生变化

[('3', 0.5407046675682068), ('2', -0.5859125256538391)]
[('101', -0.5859125256538391), ('3', -0.9985027313232422)]
[('101', 0.540704607963562), ('2', -0.9985026717185974)]
[-0.05898098 -0.0576357 ]
[ 0.19231372 -0.03319569]
[-0.22207274  0.05098101]

我想知道

  1. 为什么我换了句子结果没有变化?

  2. 为什么当我刚刚更新值时结果发生了变化?

Word2Vec 作为一种算法需要大量不同的数据集来将词向量训练成有意义的排列。

使用玩具大小的人为训练数据,您不会得到合理的结果,也不会了解算法的行为或好处。

另请注意:

  • Word2Vec使用随机初始化和随机采样作为其过程的一部分,因此即使在完全相同的数据上运行, Word2Vec运行也会产生不同的结果。 但是,对于实际数量和种类繁多的数据,每次运行都应该产生一个与任何其他运行一样有用的模型(即使许多确切的位置/相对排名可能会有所不同)。

  • 嵌套的列表列表,例如您的第一个“句子”( [["1", "2"], ["1", "3"]] ),不是Word2Vec有效训练输入。 每个“句子”应该是一个简单的字符串标记(单词)列表。

我建议您使用真实的自然语言训练数据进行实验,使用出现在真实文本中的单词数量和各种对比用法。 我建议训练数据至少有几千个独特的词,其中每个词有 5 个或更多不同的用法示例。

实际上在 gensim 中捆绑了一个小的这样的语料库,作为其自测代码和介绍教程的辅助工具。 它被称为“李语料库”,是一个古老的研究语料库,包含大约 300 条每条几百字的简短新闻文章。 您可以在 gensim Word2Vec 教程的“训练您自己的模型”部分看到其使用示例:

https://radimrehurek.com/gensim/auto_examples/tutorials/run_word2vec.html#training-your-own-model

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM