我在 FastText 模型中调用“most_similar”时遇到了问题,据我了解,Fasttext 应该能够获得不在词汇表中的单词的结果,但我得到一个“不在词汇表中”的错误,甚至在保存和加载之前,调用非常好。
这是来自 juypter 的代码。
import gensim as gensim
model = gensim.models.FastText(my_sentences, size=100, window=5, min_count=3, workers=4, sg=1)
model.wv.most_similar(positive=['iPhone 6'])
退货
[('iPhone7', 0.942690372467041),
('iPhone7.', 0.9395840764045715),
('iPhone5s', 0.9379133582115173),
('iPhone6s', 0.9338586330413818),
('iPhone5S', 0.9335439801216125),
('iPhone5.', 0.9318809509277344),
('iPhone®', 0.9314558506011963),
('iPhone6', 0.9268479347229004),
('iPhone4s', 0.9223971366882324),
('iPhone5', 0.9212019443511963)]
到目前为止一切顺利,现在我保存模型。
model.wv.save_word2vec_format("example_fasttext.txt", binary=False)
然后再次加载它:
from gensim.models import KeyedVectors
new_model = KeyedVectors.load_word2vec_format('example_fasttext.txt', binary=False, limit=50000)
然后我从刚刚加载的模型中进行确切的 most_similar 调用:
new_model.most_similar(positive=['iPhone 6'])
但现在的结果是:
KeyError: "word 'iPhone 6' not in vocabulary"
知道我做错了什么吗?