【问题标题】:Getting probability of the text given word embedding model in gensim word2vec model在gensim word2vec模型中获取文本给定词嵌入模型的概率
【发布时间】:2017-09-06 01:35:34
【问题描述】:

我正在尝试使用 gensim word2vec 模型获得最可能的单词序列。我找到了一个提供这些文件的预训练模型:

word2vec.bin
word2vec.bin.syn0.npy
word2vec.bin.syn1neg.npy

这是我试图用这个模型得到句子概率的代码:

model = model.wv.load(word_embedding_model_path)
model.hs = 1
model.negative = 0
print model.score(sentence.split(" "))

运行此代码时出现此错误:

AttributeError: 'Word2Vec' object has no attribute 'syn1'

谁能帮我弄清楚如何解决这个问题。一般来说,我想使用一些预训练模型来获得单词序列一起出现的概率。

【问题讨论】:

    标签: python nlp gensim word2vec language-model


    【解决方案1】:

    在初始设置和训练后,您无法将模型从使用负采样(例如negative=5, hs=0)切换到使用分层softmax(例如hs=1, negative=0)。这两个模型使用不同的内部属性,这些属性仅由设置和训练创建。 (例如,syn1 属性仅存在于在分层-softmax 模式下创建和训练的模型中。)

    由于score() 方法目前仅适用于 HS 模型,因此您只需将其用于在该模式下训练的模型。

    (另请注意,来自score() 的单个文本针对单个模型的值不能解释为绝对概率。它仅用于与其他文本针对同一模型或相同模型的得分进行比较文本对比替代模型,分数的相对值变得有意义。)

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 2019-05-17
      • 1970-01-01
      • 2019-02-21
      • 2014-04-02
      • 2019-05-26
      • 2017-08-08
      • 2016-12-04
      • 1970-01-01
      相关资源
      最近更新 更多