我正在尝试使用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'谁能帮我想出解决这个问题的办法。一般来说,我希望使用一些预训练模型来获得单词序列一起出现的概率。
发布于 2017-09-07 01:42:38
在初始设置和训练之后,您不能将模型从使用负采样(例如negative=5, hs=0)切换到使用分层softmax(例如hs=1, negative=0)。这两个模型使用不同的内部属性,这些属性仅由设置和培训创建。(例如,特性syn1仅存在于以分层-软最大模式创建和训练的模型中。)
由于score()方法目前仅适用于HS模型,因此您只需将其用于在该模式下训练的模型。
(还要注意,相对于单个模型,单个文本的score()值不能解释为绝对概率。只有在与相同模型的其他文本的分数或与备用模型的相同文本的分数进行比较时,分数的相对值才变得有意义。)
https://stackoverflow.com/questions/46065514
复制相似问题