Gensim 的 word2vec 返回尴尬的向量

Gensim's word2vec returning awkward vectors

给定格式

中经过大量清理的输入
model_input = [['TWO people admitted fraudulently using bank cards (...)'],
               ['All tyrants believe forever',
                'But history especially People Power (...) first Bulatlat']]

word2vec 与更明显的结果一起返回超特定向量,例如

{'A pilot shot dogfight Pakistani aircraft returned India Friday freed Islamabad called peace gesture following biggest standoff two countries years':
     <gensim.models.keyedvectors.Vocab at 0x12a93572828>,
 'This story published content partnership POLITICO':
     <gensim.models.keyedvectors.Vocab at 0x12a93572a58>,
 'Facebook says none 200 people watched live video New Zealand mosque shooting flagged moderators underlining challenge tech companies face policing violent disturbing content real time': 
    <gensim.models.keyedvectors.Vocab at 0x12a93572ba8>}

出现这种情况的文档似乎比没有出现的多,我很难相信它们每个出现超过五次。

我正在使用以下代码创建我的模型:

TRAIN_EPOCHS = 30
WINDOW = 5
MIN_COUNT = 5 
DIMS = 250

vocab_model = gensim.models.Word2Vec(model_input,
                                     size=DIMS,
                                     window=WINDOW,
                                     iter=TRAIN_EPOCHS,
                                     min_count=MIN_COUNT)

我做错了什么,我得到了如此无用的向量?

Word2Vec 期望它的训练语料库——它的 sentences 参数——是一个可重复的 Python 序列,其中每个项目本身就是一个单词列表。

您的 model_input 列表看起来是一个列表,其中每个项目本身就是一个列表,但这些列表中的每个项目都是一个由许多单词组成的完整句子作为一个字符串。因此,在它期望单独的词标记(作为字符串)的地方,你给它完整的未标记的句子(作为字符串)。

如果您将文本分解为单词列表,并将这些单词列表的序列作为训练数据提供给模型,那么您将获得单词标记的向量,而不是句子-字符串。