Machine learning Word2Vec:单词不在词汇表中,即使它在语料库中

Machine learning Word2Vec:单词不在词汇表中,即使它在语料库中,machine-learning,word2vec,Machine Learning,Word2vec,语料库是一个句子列表,其中一个句子是一个单词列表: 我有一个词向量似乎是有效的: 然而,当我尝试使用word_模型['intensity]时,我得到了错误信息:“单词'intensity'不在词汇表中” 尽管事实上单词强度在语料库列表中。它在测试中出现一次 我通过整合检查了语料库列表,找到了包含“强度”的句子索引 我还检查了数据框,发现它在里面: 还有一些单词在语料库列表中,但不在word2vecvocab中 我尝试了使用cbow和skipgram并尝试了1,5,15的不同时期 在所有情况

语料库是一个句子列表,其中一个句子是一个单词列表:

我有一个词向量似乎是有效的:

然而,当我尝试使用word_模型['intensity]时,我得到了错误信息:“单词'intensity'不在词汇表中”

尽管事实上单词强度在语料库列表中。它在测试中出现一次

我通过整合检查了语料库列表,找到了包含“强度”的句子索引

我还检查了数据框,发现它在里面:

还有一些单词在语料库列表中,但不在word2vecvocab中

我尝试了使用cbowskipgram并尝试了1,5,15的不同时期


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

您可能正在使用
gensim
Word2Vec
实现

该实现与原始的
word2vec.c
code一样,对5个字强制执行默认的
minu count
。少于5个示例的单词将被忽略。通常,这会大大提高剩余字向量的质量

(只有一个或几个用法示例的单词本身并没有很强的词向量,因为没有足够的种类来反映它们在更大的语言中的真实含义,而且它们的几个示例对模型的影响远远小于其他示例较多的单词。但是,由于这类单词的数量往往很多,示例较少,因此它们总的来说会受到影响(换言之,通过大量的例子,向上稀释/干扰了该模型可以做的学习。)

您可以将
minu count=1
设置为保留这些单词,但与丢弃这些稀有单词相比:

  • 稀有词的向量将很差
  • 这些罕见的单词的出现将使模型更大,训练速度明显减慢
  • 其他更常见单词的向量将稍微差一些

您可能正在使用
gensim
Word2Vec
实现

该实现与原始的
word2vec.c
code一样,对5个单词强制执行默认的
minu count
。少于5个示例的单词将被忽略。通常,这会大大提高剩余单词向量的质量

(只有一个或几个用法示例的单词本身并没有很强的词向量,因为没有足够的种类来反映它们在更大的语言中的真实含义,而且它们的几个示例对模型的影响远远小于其他示例较多的单词。但是,由于这类单词的数量往往很多,示例较少,因此它们总的来说会受到影响(换言之,通过大量的例子,向上稀释/干扰了该模型可以做的学习。)

您可以将
minu count=1
设置为保留这些单词,但与丢弃这些稀有单词相比:

  • 稀有词的向量将很差
  • 这些罕见的单词的出现将使模型更大,训练速度明显减慢
  • 其他更常见单词的向量将稍微差一些

您是否使用gensim或TensorFlow实现?gensim。问题已经解决。您是否可以使用gensim或TensorFlow实现?gensim。问题已经解决。非常感谢您给出的精彩答案。我现在更了解它了!非常感谢您给出的精彩答案。我现在更了解它了!
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()
word_model = Word2Vec(corpus, workers = 2,sg=1, iter = 5)

word_model['maybelline', 'clear'].shape