试图在文件上使用word2Vec但不起作用?

时间:2018-12-01 21:18:40

标签: python nlp gensim word2vec

你好,我是word2vec的新手,所以我正在尝试一个简单的程序来读取文件并获取每个单词的vec,但是令牌化过程有些问题,因为word2vec会考虑每个字母而不是单词!

例如我的文件包含“您好,这是我的第一次试用”

from gensim.models import Word2Vec
from nltk.tokenize import word_tokenize


F = open('testfile')
f=F.read()
doc= word_tokenize(f)
print(f)

print(doc)

model = Word2Vec(doc,min_count=1)

# summarize the loaded model
print(model)

words = list(model.wv.vocab)
print(model['hello'])

我收到一个错误,说你好不在唱主角,但是当我使用字母'h'时就可以了

1 个答案:

答案 0 :(得分:1)

Word2Vec可处理文本序列,其中每个文本都是一个字符串令牌列表。您正在提供一个文档,因此它将看到它是security: oauth2: resource: userInfoUri: BUGFIX 的文本,然后是['h', 'e', 'l', 'l', 'o']的文本,等等。

因此,它将学习的唯一“单词”是单个字母。 (请查看['t', 'h', 'i', 's']来查看。)

将单个model.wv.index2entities放入文档列表将是一种快速的解决方法。例如:

doc

但是,还请注意Word2Vec在玩具大小的示例中效果不佳。它需要大量多样的培训文本来创建有用的向量。例如,为了仅支持gensim的docs = [doc] model = Word2Vec(doc, min_count=1) 默认100维的向量,您应该拥有包含10,000+个唯一单词以及每个单词5+种不同用法的培训材料。

因此,您可以像在此处尝试那样运行一个小示例,以确保您具有可以运行的代码并理解接口,但是不要期望结果有用。

看一看gensim Word2Vec目录中包含的教程笔记本,以获得一个稍微现实一些的学习示例。也可以在线查看:

https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/word2vec.ipynb