我正在尝试用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')
答案 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)