Gensim:doc2vec是模型还是操作?与 R 实现的区别

Gensim: Is doc2vec a model or operation? Differences from R implementation

我的任务是将文档矢量模型投入生产。 我是 R 用户,所以我的原始模型是在 R 中。我们拥有的途径之一是在 Python.

中重新创建代码和模型

我对 Doc2vec 的 Gensim 实现感到困惑

在 R 中工作的过程是这样的:

离线



在线



我为 Gensim 找到的示例代码似乎与此截然不同。

gensim 中显示 Doc 向量是与您可以训练的词向量分开的模型 class。似乎在某些情况下,词向量和文档向量都是同时训练的。以下是教程和 Whosebug 答案中的一些示例:

https://medium.com/@mishra.thedeepak/doc2vec-simple-implementation-example-df2afbbfbad5

How to use Gensim doc2vec with pre-trained word vectors?

gensim(1.0.1) Doc2Vec with google pretrained vectors

所以我的问题是:

Doc2Vec 的 gensim 实现与 TextTinyR 实现有根本不同吗?

或者gensim doc2vec模型基本上只是将word2vec模型和doc2vec过程封装成一个对象?

关于这个过程我还有什么遗漏的吗?

我不知道您提到的 tinyTextR 包的 Doc2Vec 功能在做什么 - Google 搜索没有找到其功能的文档。但如果它是即时的,并且它需要词向量作为输入,也许它只是将文本词的所有词向量平均在一起。

您可以在 Gensim 文档中阅读有关 Gensim 的 Doc2Vec 模型的所有信息:

https://radimrehurek.com/gensim/models/doc2vec.html

正如其介绍所解释的那样:

Learn paragraph and document embeddings via the distributed memory and distributed bag of words models from Quoc Le and Tomas Mikolov: “Distributed Representations of Sentences and Documents”.

Gensim Doc2Vec 实现的算法通常也被其作者称为 'Paragraph Vector',包括在 Le 等人 "Document Embeddings With Paragraph Vector".

的后续论文中

'Paragraph Vector' 使用类似 word2vec 的训练过程来学习段落(或许多单词的其他文本)的文本向量。此过程 不需要 需要先验词向量作为输入,但许多模式将与文档向量一起共同训练词向量。它 确实 需要对一组文档进行训练,但是在训练之后 .infer_vector() 方法可以用于训练新文本的向量,而不是在原始训练集中,以他们使用相同词语的程度。 (此类 post-model-training 文档中的任何新词都将被忽略。)

您也许可以使用诸如平均词向量之类的简单方法来近似您的 R 函数。

或者,您可以在 Gensim 中尝试替代 Doc2Vec

但是,Gensim Doc2Vec 绝对是不同的东西,不幸的是这两个库对不同的进程使用相同的 Doc2Vec 名称。

在 R 中,您可以使用 text2vec (https://cran.r-project.org/package=text2vec) to train Glove embeddings, word2vec (https://cran.r-project.org/package=word2vec) to train word2vec embeddings or train fasttext embeddings (https://cran.r-project.org/package=fastText / https://cran.r-project.org/package=fastTextR). You can aggregate these embeddings to the document level by just taking e.g. the average of the words or relevant nouns/adjectives (if you tag the text using udpipe (https://cran.r-project.org/package=udpipe) or use the approach from R package TextTinyR (https://cran.r-project.org/package=TextTinyR),它提供了 3 个其他聚合选项:sum_sqrt / min_max_norm / idf

R 包 doc2vec (https://cran.r-project.org/package=doc2vec) allows one to train paragraph vector embeddings (PV-DBOW / PV-DM in Gensim terminology) which is not just averaging of word vectors but trains a specific model (e.g. see https://www.bnosac.be/index.php/blog/103-doc2vec-in-r)。 ruimtehol (https://cran.r-project.org/package=ruimtehol) 允许训练 Starspace 嵌入,它也可以选择训练句子嵌入

我想您已经知道 textTinyR 包中的 Doc2Vec 函数文档。我想补充的是以下信息:

郑重声明,我是 'textTinyR' 软件包的作者。