关于此主题,有人提出了类似的问题,但到目前为止,我对这些答复并不十分满意。请原谅我。
我正在使用python库Word2Vec
中的函数gensim
。
我的问题是,只要将参数min_count
设置为大于1,我就不能在语料库的每个单词上运行模型。有人会说这是逻辑原因,因为我选择忽略仅出现一次的单词。但是该函数的行为很奇怪,因为它给出了一个错误,提示单词'blabla'不在词汇表中 ,而这正是我想要的(我希望这个单词成为词汇量之外)。
我可以想象这不是很清楚,然后在下面找到一个可重现的示例:
import gensim
from gensim.models import Word2Vec
# My corpus
corpus=[["paris","not","great","city"],["praha","better","than","paris"],"country"]]
# Load a pre-trained model - The orignal one based on google news
model_google = gensim.models.KeyedVectors.load_word2vec_format(r'GoogleNews-vectors-negative300.bin',binary=True)
# Initializing our model and upgrading it with Google's
my_model = Word2Vec(size=300,min_count=2)#with min_count=1,everything works fine
my_model.build_vocab(corpus)
total_examples = my_model.corpus_count
my_model.build_vocab([list(model_google.vocab.keys())],update=True)
my_model.intersect_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True,lockf=1.0)
my_model.train(corpus,total_examples=total_examples,epochs=my_model.iter)
# Show examples
print(my_model['paris'][0:10])#works cause 'paris' is present twice
print(my_model['country'][0:10])#does not work cause 'country' appears only once
例如,您可以找到Google的模型there,但可以随意使用任何模型,也可以随意使用,这不是我的文章的重点。
如代码注释中所通知:在“巴黎”上运行模型有效,但在“国家”上无效。当然,如果我将参数min_count
设置为1,一切正常。
我希望它足够清楚。
谢谢。