了解Gensim Word2Vec 3个单词的most_like结果

问题描述 投票:0回答:1

[我以不同的方式使用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. 为什么我刚更新值后结果改变了?

python nlp gensim word2vec
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.