word2vec模型由charachters而不是单词组成

时间:2017-07-18 06:59:04

标签: gensim word2vec

我正在尝试用Gensim制作一个关于Persian语言的word2vec模型,它有“space”作为字符分隔符,我使用的是python 3.5。我遇到的问题是我给了一个文本文件作为输入,它返回一个模型,它只包含每个字符而不是单词。我还将输入作为推荐的单词列表:

Python Gensim word2vec vocabulary key

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

我对输入进行了一些预处理,包括:

将多个空格折叠成一个空格 通过拆分空格来标记化 删除长度小于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')

2 个答案:

答案 0 :(得分:3)

gensim Word2Vec模型不希望字符串作为其文本示例(句子),而是令牌列表。因此,在将文本传递给Word2Vec之前,需要将代码标记为文本。

您显示的代码只是将'aggregate.txt'文件中的原始数据传递给Word2Vec wFileRead

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

答案 1 :(得分:1)

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

from nltk import word_tokenize

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