本文结构:
- Doc2Vec 有什么用
- 两种实现方法
- 用 Gensim 训练 Doc2Vec
Doc2Vec 或者叫做 paragraph2vec, sentence embeddings,是一种非监督式算法,可以获得 sentences/paragraphs/documents 的向量表达,是 word2vec 的拓展。
学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,
或者进一步可以给文档打标签。
例如首先是找到一个向量可以代表文档的意思,
然后可以将向量投入到监督式机器学习算法中得到文档的标签,
例如在**情感分析 **sentiment analysis 任务中,标签可以是 “negative”, “neutral”,”positive”。
2013 年 Mikolov 提出了 word2vec 来学习单词的向量表示,
主要有两种方法,cbow ( continuous bag of words) 和 skip-gram ,
一个是用语境来预测目标单词,另一个是用中心单词来预测语境。
既然可以将 word 表示成向量形式,那么句子/段落/文档是否也可以只用一个向量表示?
一种方式是可以先得到 word 的向量表示,然后用一个简单的平均来代表文档。
另外就是 Mikolov 在 2014 提出的 Doc2Vec。
Doc2Vec 也有两种方法来实现。
dbow (distributed bag of words)
gensim 实现:
model = gensim.models.Doc2Vec(documents,dm = 0, alpha=0.1