Word2Vec:词汇不在词表中,尽管它在语料库中

test = pd.read_csv('test.csv')train = pd.read_csv('train.csv')

Image

def prep_corpus():    sentences = []    for x in test['title']:        sentences.append(x.strip().split())    for x in train['title']:        sentences.append(x.strip().split())    return sentencescorpus = prep_corpus()

语料库是由句子列表组成的,其中一个句子是一个词列表:

Image

word_model = Word2Vec(corpus, workers = 2,sg=1, iter = 5)word_model['maybelline', 'clear'].shape

我有一个似乎可以工作的词向量:

Image

然而,当我尝试使用word_model[‘intensity’]时,我得到了错误消息:“词’intensity’不在词汇表中”

尽管’intensity’这个词确实出现在语料库列表中。它在测试集中出现了一次。

我通过遍历语料库列表检查了它,并找到了包含’intensity’的句子的索引

我也检查了数据框,并在其中找到了它:

Image

语料库列表中还有一些词不在word2vec词汇表中。

我尝试使用了cbowskipgram,并尝试了不同的1、5、15个epoch。

在所有情况下,我仍然遇到这个错误。我该如何解决这个问题?


回答:

您可能在使用gensimWord2Vec实现。

该实现与原始的word2vec.c代码一样,默认设置了词的最小计数min_count为5。出现次数少于5次的词将被忽略。一般来说,这大大提高了剩余词向量的质量。

(仅有一个或几个使用例子的词本身不会得到强有力的词向量,因为没有足够的多样性来反映它们在更大语言中的真实含义,而且它们的少数例子对模型的影响远不如其他有更多例子的词。但由于这种少例子的词往往有很多,总体上它们会稀释/干扰模型对其他有大量例子的词的学习。)

您可以设置min_count=1来保留这些词,但与丢弃这些罕见词相比:

  • 这些罕见词的向量质量会很差
  • 这些罕见词的存在会使模型变得更大且训练速度明显变慢
  • 其他更常见词的向量质量会略有下降

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注