【问题标题】:How to train word2vec with your own vocab如何用自己的词汇训练 word2vec
【发布时间】:2018-02-04 20:49:13
【问题描述】:

我在用自己的词汇训练 word2vec 时出错。我也不明白为什么会这样。

代码:

from gensim.models import word2vec
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

sentences = word2vec.LineSentence('test_data')

model = word2vec.Word2Vec(sentences, size=20)
model.build_vocab(sentences,update=True)
model.train(sentences)

print model.most_similar(['course'])

会报错

2017-08-27 16:50:04,590 : INFO : precomputing L2-norms of word weight vectors
Traceback (most recent call last):
  File "tryword2vec.py", line 23, in <module>
    print model.most_similar(['course']) 
  File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 1285, in most_similar
    return self.wv.most_similar(positive, negative, topn, restrict_vocab, indexer)
  File "/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py", line 97, in most_similar
    raise KeyError("word '%s' not in vocabulary" % word)
KeyError: "word 'course' not in vocabulary"

test_data 包含:

Engg 学士是一门课程。 M.Tech 是一门课程。我是一门课程。 B.Tech是一门课程。文学学士学位是一门课程。时装设计是一门 课程。多媒体是一门课程。机械工程是一门课程。计算机 科学是一门课程。电子是一个来源。工程学是一门课程。 MBA是一门课程。 BBA 是一门课程。

有什么帮助吗?

【问题讨论】:

    标签: nlp stanford-nlp word2vec doc2vec


    【解决方案1】:

    您没有收到错误的原因是因为单词 course 不在词汇表中。取而代之的是 course.

    当然有句号"."

    检查你的词汇量 model.wv.vocab

    {u'a': <gensim.models.keyedvectors.Vocab at 0x7fe086c461d0>,
     u'course.': <gensim.models.keyedvectors.Vocab at 0x7fe0b4704f90>,
     u'is': <gensim.models.keyedvectors.Vocab at 0x7fe086ba0d10>}
    

    并隐藏您的 api 键。

    【讨论】:

    • 对。为什么只有“a”、“course”、“is”在词汇中可见,而不是Engg、B.Tech、ME等学士学位。有什么方法可以检查它。
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 2019-09-25
    • 2019-01-16
    • 1970-01-01
    • 2019-02-08
    • 2019-09-19
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多