test = pd.read_csv('test.csv')
train = pd.read_csv('train.csv')
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 sentences
corpus = prep_corpus()
Corpus是一个句子列表,其中一个句子是一个单词列表:
word_model = Word2Vec(corpus, workers = 2,sg=1, iter = 5)
word_model['maybelline', 'clear'].shape
我有一个似乎可以工作的单词向量:
但是,当我尝试执行word_model ['intensity]时,出现错误消息:“单词'intensity'不在词汇表中
尽管事实上单词强度在语料库列表中。它在测试中出现一次。
我通过对语料库列表进行整合检查,发现包含“强度”的句子的索引
我还检查了数据框并在里面找到了它:
语料库列表中还有一些单词,但 word2vec 词汇中却没有。
我尝试同时使用 cbow 和 skipgram ,并尝试使用1,5,15的不同时期。
在所有情况下,我仍然会遇到此错误。我该如何解决这个问题?
答案 0 :(得分:1)
您可能正在使用gensim
Word2Vec
实现。
该实现与原始word2vec.c
代码类似,对5个单词强制使用默认的min_count
。单词少于5个示例的单词将被忽略。通常,这极大地改善了其余词向量的质量。
(只有一个或几个用法示例的单词本身不会获得强大的单词向量,因为没有足够的多样性来用较大的语言反映其真实含义,并且它们的几个示例对模型的影响远小于但是,由于这样的话往往会有很多,而很少有例子,所以总的来说,它们稀释/干扰了模型的学习能力,换句话说,有很多例子。)
您可以设置min_count=1
保留这些单词,但是与丢弃这些稀有单词相比: