python - 了解 gensim Word2Vec most_similar 结果的 3 个单词

标签 python nlp gensim word2vec

我以不同的方式使用 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 使用随机初始化和随机采样作为其过程的一部分,因此即使对完全相同的数据进行运行,每次运行也可能会产生不同的结果。然而,有了实际数量和种类的数据,每次运行都应该产生一个与任何其他运行一样有用的模型(即使许多确切的位置/相对排名可能会有所不同)。

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

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

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

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

关于python - 了解 gensim Word2Vec most_similar 结果的 3 个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59634935/

相关文章:

lucene - 单词共现 - 在一组 n-gram 中找到一个术语的共现

nlp - 使用 Spacy 提取短语

python - pytest 在参数化中使用固定装置作为参数

python - 如何在 python2 中使用 geopandas 移动多边形

python - 从自由文本中提取购物 list

scikit-learn - 如何从 MultinomialNB 中获取新数据的预测?

python - Django 查询多对多子集包含

python - boto3 客户端 NoRegionError : You must specify a region error only sometimes

python - 在python3中安装Gensim

python - 如何从gensim的word2vec中提取词汇向量?