从 word2vec 中提取词嵌入

问题描述

晚上好,我有一个相对简单的问题,主要是因为我对 Python 缺乏经验。我想为单词列表提取单词嵌入。我在这里创建了一个简单的列表:

list_word = [['Word'],['ant'],['bear'],['beaver'],['bee'],['bird']]

然后加载 gensim 和其他需要的库:

#import tweepy           # Obtain Tweets via API
import re               # Obtain expressions 
from gensim.models import Word2Vec    #Import gensim Word2Fec

现在,当我使用 Word2Vec 函数时,我运行以下命令:

#extract embedding length 12
model = Word2Vec(list_word,min_count = 3,size = 12)
print(model)

当模型运行时,我看到词汇大小为 1,而它不应该是。输出如下: Word2Vec(vocab=1,size=12,alpha=0.025)

我认为导入的数据格式不正确,可以使用一些建议甚至示例代码来了解如何将其转换为正确的格式。感谢您的帮助。

解决方法

您的 list_data,6 个句子,每个句子都有一个单词,不足以训练 Word2Vec,这需要大量不同的真实文本数据。除其他问题外:

  • 由于 min_count=3 设置,仅出现一次的单词将被忽略(并且降低该参数不是一个好主意)
  • 单词句子没有算法使用的邻近词上下文
  • 获得好的“密集”向量需要远大于向量维度的词汇量,以及每个单词与其他单词使用的许多不同示例

尝试使用更大的数据集,您会看到更真实的结果。此外,在 INFO 级别启用 Python 日志记录将在代码运行时显示很多进展 - 并且可能会提示问题,因为您注意到发生的步骤有或没有合理的计数和延迟。