【问题标题】:Trying to use word2Vec on file but not working?尝试在文件中使用 word2Vec 但不起作用?
【发布时间】:2018-12-01 21:18:40
【问题描述】:

您好,我是 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'])

我收到一个错误,说 hello 不在词汇中,但是当我使用字母“h”时它可以工作

【问题讨论】:

  • doc 打印什么?
  • 文件内容列表 ['hello', 'this','is','my','first','trial'] @ShlomiF

标签: python nlp gensim word2vec


【解决方案1】:

Word2Vec 适用于文本序列,其中每个文本都是一个字符串标记列表。您提供的是单个文档,因此它会将其视为 ['h', 'e', 'l', 'l', 'o'] 的文本,然后是 ['t', 'h', 'i', 's'] 的文本,等等。

因此,它会学习的唯一“单词”是单个字母。 (看看model.wv.index2entities 看看这个。)

将您的单个 doc 放入文档列表将是一种快速的解决方法。例如:

docs = [doc]
model = Word2Vec(doc, min_count=1)

但是,还要注意 Word2Vec 不适用于玩具大小的示例。它需要大量多样的训练文本来创建有用的向量。例如,要仅支持 gensim 的 Word2Vec 的默认 100 维向量,您应该拥有包含 10,000 多个唯一单词和每个单词 5 种以上不同用途的培训材料。

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

查看包含在 gensim docs/notebooks 目录中的教程笔记本,以获取更实际的学习示例。也可以在线查看:

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

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2021-12-19
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多