gensim Doc2Vec区分相同的句子与正面和负面背景。?

时间:2018-04-26 08:31:46

标签: python nlp gensim doc2vec

在学习Doc2Vec库时,我遇到了以下问题。

gensim Doc2Vec是否区分具有正面和负面背景的相同句子?

例如:

句子A:"我喜欢机器学习"

句子B:"我不喜欢机器学习"

如果我用doc2vec训练句子A和B并找到他们的向量之间的余弦相似性:

  1. 模型是否能够区分句子并使余弦相似度远小于1或为负?
  2. 或者模型是否代表向量空间中非常接近的句子并且使余弦相似度接近1,因为除了否定词之外,大多数词都是相同的(不要)。
  3. 另外,如果我只训练句子A并尝试推断句子B,那么两个向量是否在向量空间中彼此接近。?

    我会请求NLP社区和Doc2Vec专家帮助我理解这一点。

    先谢谢!!

2 个答案:

答案 0 :(得分:2)

天生地,gensim Doc2Vec背后的'段落矢量'算法所做的就是找到一个矢量(与神经网络一起)擅长预测文本中出现的单词。所以是的,具有几乎相同单词的文本将具有非常接近的向量。 (在某些地方,某些词语具有很大的逆转效应,没有句法上的理解。)

然而,即使这样的载体可能在情绪分析中也可以(尽管不是最先进的)。最初的“段落向量”论文评估向量可用性的方法之一是估计短片评论的情绪。 (这些长于一个句子 - 数百个单词。)当训练分类器上的doc-vectors时,分类器在评估评论的否定性/积极性方面做得非常好,并且比其他基线技术更好。

你的单个,微小的,有人工作的句子可能会更难 - 它们只有几个词的差异,所以向量将非常接近。但是那些不同的词(尤其是'not')通常非常表明情绪 - 因此微小的差异可能足以将矢量从“正”区域转移到“负”区域。

所以你必须尝试一下,有一个包含成千上万种不同文本示例的真实训练语料库(因为这种技术在玩具大小的数据集上不能很好地工作)和后矢量化分类器步骤。

另请注意,在纯Doc2Vec中,在训练期间添加已知标签(例如“正面”或“负面”)(与任何基于文档ID的唯一标记一起或代替)有时可以帮助生成矢量空间对你想要的区别更敏感。而且,像'FastText'或'StarSpace'这样的其他变体技术更直接地将已知标签以可能有帮助的方式集成到矢量化中。

短句的最佳结果可能会考虑到单词的相对排序和语法分析。您可以在斯坦福大学NLP研究小组的一页上看到这种更先进技术的演示:

http://nlp.stanford.edu:8080/sentiment/rntnDemo.html

虽然在那里的评论中查看了仍然难以解决的各种困难案例。

答案 1 :(得分:0)

使用 textblob 并为每个句子设置情感和极性。使用 nlp 标记句子