使用 Word2vec 模型预测单词

数据挖掘 nlp 预测建模 词嵌入
2021-09-30 22:34:41

给出一句话:“当我打开??门时,它会自动开始加热”

我想获得可能的单词列表??有概率。

word2vec 模型中使用的基本概念是在给定周围上下文的情况下“预测”一个单词。

建立模型后,对新句子执行预测任务的正确上下文向量操作是什么?

它只是一个线性总和吗?

model.most_similar(positive=['When','I','open','the','door','it','starts' ,
                   'heating','automatically'])
2个回答

Word2vec 适用于 CBOW 和 skip-gram 两种模型。让我们采用 CBOW 模型,因为您的问题与预测目标词的方式相同,给定周围的词。

从根本上说,该模型在隐藏层的帮助下开发了输入和输出权重矩阵,这取决于输入上下文词和输出目标词。因此,反向传播用于在预测输出向量与当前输出矩阵之间的误差差异时更新权重。

基本上,从给定的上下文词预测目标词被用作一个方程来获得给定数据的最佳权重矩阵。

要回答第二部分,它似乎比线性总和有点复杂。

  1. 获取上下文词的所有词向量
  2. 平均它们以找出h大小的隐藏层向量Nx1
  3. 获取大小为syn1(word2vec.cgensim)的输出矩阵VxN
  4. 乘以syn1h得到的向量将z具有大小Vx1
  5. 计算y = softmax(z)大小为 的概率向量Vx1,其中最高概率表示目标词在词汇表中的 one-hot 表示。 V表示词汇的大小并N表示嵌入向量的大小。

资料来源:http ://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf

更新:长期短期记忆模型目前在预测下一个单词方面做得很好。seq2seq模型在tensorflow 教程中进行了解释。还有一篇关于文本生成的博客文章。

最新版本的 Word2Vec 中添加了缺失词预测功能。当然,您的句子需要匹配用于训练模型的 Word2Vec 模型输入语法(小写字母、停用词等)

用于预测“When I open ? door”的前 3 个单词:

print(model.predict_output_word(['When','I','open','door']), topn = 3)