我正在尝试应用word2vec / doc2vec来查找类似的句子。首先考虑word2vec的单词相似度。据我所知,CBOW可用于在给定上下文的情况下找到最合适的单词,而Skip-gram用于查找给定单词的上下文,因此在这两种情况下,我都会得到经常共同出现的单词。但是如何找到相似的词呢?我的直觉是,由于相似的词语倾向于出现在相似的语境中,因此词语相似性实际上是从语境/共同词语之间的相似性来衡量的。在神经网络中,当隐藏层中某些单词的向量表示传递到输出层时,它输出共同出现的单词的概率。因此,共同出现的词语影响某些词语的向量,并且由于相似词语具有相似的共同词组,因此它们的向量表示也是相似的。为了找到相似性,我们需要提取每个单词的隐藏层权重(或向量)并测量它们的相似性。我理解正确吗?
最后,使用word2vec / doc2vec查找推文文本(完整句子)相似性的好方法是什么?
答案 0 :(得分:0)
我不确定这是Stack Overflow的问题,但这是我尝试回复...
你有基本的概念,虽然你在提到神经网络时将目标的定义与实现混合在一起,还有其他方法可以为CBOW和skip-gram进行单词嵌入。
然后可以传输单词嵌入(通常称为传输学习,但在NLP中,它们简称为嵌入层,这是作为第一层的标准做法)到另一个域,并保持冻结或调整为更复杂手头的NLP任务,所以...
至于你的上一个问题,它实际上取决于任务的具体细节
我认为对于doc2vec的无监督学习,比如聚类主题,一个好的选择是尝试自动编码器(参见Hinton's dimensionality reduction paper)语言模型(并采用最后隐藏的向量)wmd(I认为它是在gensim中实现的)和许多其他的(还有其他类似BOW的方法根本不使用单词嵌入)