[Word2Vec] [gensim]使用参数min_count处理词汇中的遗漏单词>>

问题描述 投票:0回答:1

关于此主题,有人提出了类似的问题,但到目前为止,我对这些答复并不十分满意;请原谅我。

我正在使用python库Word2Vec中的函数gensim

我的问题是,我只要我将参数min_count设置为大于一个,就不能对我的语料库的每个单词运行模型

。有人会说这是逻辑原因,因为我选择忽略仅出现一次的单词。但是该函数的行为很奇怪,因为它给出了错误说单词'blabla'不在词汇表中,而这正是我想要的(我希望这个词不在词汇表中)。

我可以想象这不是很清楚,然后在下面找到一个可重现的示例:

import gensim
from gensim.models import Word2Vec

# My corpus
corpus=[["paris","not","great","city"],
       ["praha","better","great","than","paris"],
       ["praha","not","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,则一切正常。

我希望它足够清楚。

谢谢。

关于此主题,有人提出了类似的问题,但到目前为止,我对这些答复并不十分满意;请原谅我。我正在使用python中的Word2Vec函数...

python nlp gensim word2vec word-embedding
1个回答
0
投票

如果您请求一个不存在的单词,这会引发错误,因为您选择不学习稀有单词的向量,例如您的示例中的'country'。 (而且:此类带有少量示例的单词通常无法获得良好的向量,而保留它们可能会使其余单词的向量变差,因此,通常,min_count尽可能大,甚至可能比1大得多。一个好主意。)

© www.soinside.com 2019 - 2024. All rights reserved.