word2vec 模型由字符而不是单词组成

word2vec models consist of characters instead of words

我正在尝试通过 Gensim 在波斯语上制作一个 word2vec 模型,它以 "space" 作为字符分隔符,我使用 python 3.5。我遇到的问题是我给了一个文本文件作为输入,它 returns 一个只包含每个字符而不是单词的模型。我还将输入作为建议的单词列表提供:

它对我不起作用,我认为它没有考虑句子中单词的顺序,所以它是不正确的。

我对我的输入做了一些预处理,其中包括:

将多个空格合并为一个空格
通过拆分空格来标记化
删除长度少于 3 个字符的单词 删除停用词

我把文本给了 word2vec,它给了我正确的结果,但我在 python 上需要它,所以我的选择仅限于使用 Gensim。

我还尝试在 gensim 上加载由 word2vec 源制作的模型,但出现错误,因此我需要通过 Gensim 创建 word2vec 模型。

我的代码是:

  wfile = open('aggregate.txt','r')    
  wfileRead = wfile.read()    
  model = word2vec.Word2Vec(wfileRead , size=100)   
  model.save('Word2Vec.txt')

gensim Word2Vec 模型不期望 strings 作为其文本示例(句子),而是 lists-of-tokens。因此,在将文本传递给 Word2Vec 之前,由您的代码对文本进行标记化。

您显示的代码只是将 'aggregate.txt' 文件中的原始数据作为 wFileRead.

传递到 Word2Vec

查看 gensim 文档中的示例,包括 gensim 附带的 LineSentence class,以获得想法

您需要使用 nltk 将文本标记为单词。

from nltk import word_tokenize

tokenized_text = word_tokenize(wfileRead)
model = word2vec.Word2Vec(tokenized_text  , size=100)