问题标签 [doc2vec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
937 浏览

python - 如何将对话数据分成多对(上下文,响应)

我正在使用 Gensim Doc2Vec 模型,试图对客户支持对话的部分进行聚类。我的目标是为支持团队提供自动回复建议。

图 1:显示了一个示例对话,其中用户问题在下一个对话行中得到回答,从而可以轻松提取数据:

图1

在谈话中应该建议“你好”“我们的办公室位于纽约市”


图 2:描述了问题和答案不同步的对话

图 2

在谈话中应该建议“你好”“我们的办公室位于纽约市”


图 3:描述了一个对话,其中答案的上下文是随着时间的推移而建立的,出于分类目的(我假设),有些行是多余的。

图 3

在对话期间应建议“这里是免费试用帐户的链接”


每个对话行(简化)都有以下数据:
谁编写了该行(用户或代理)、文本、时间戳

我正在使用以下代码来训练我的模型:

:我应该如何构建我的训练数据以及可以应用哪些启发式方法从原始数据中提取它?

0 投票
2 回答
2471 浏览

python - doc2vec - 如何更快地推断文档向量?

我已经训练了大约 2300 个段落的段落向量(每个段落在 2000-12000 个单词之间),每个段落的向量大小为 300。现在,我需要推断我认为是段落的大约 100,000 个句子的段落向量(每个句子大约 10-30每个单词对应于之前已经训练的 2300 个段落)。

所以,我正在使用

model.infer_vector(sentence)

但是,问题是它花费的时间太长,并且它不需要任何参数,例如“ workers”。!有没有办法可以通过线程或其他方式加快进程?我正在使用一台 8gb 内存的机器,当我使用

结果是8。

我需要这个来回答多项选择题。此外,是否有任何其他库/模型doc2vec可以帮助完成这项任务?

在此先感谢您的时间。

0 投票
1 回答
1957 浏览

python - doc2vec - python 中 doc2vec 训练和 infer_vector() 的输入格式

在 gensim 中,当我给一个字符串作为训练 doc2vec 模型的输入时,我得到这个错误:

TypeError('不知道如何处理 uri %s' % repr(uri))

我提到了这个问题Doc2vec : TaggedLineDocument() 但仍然对输入格式有疑问。

documents = TaggedLineDocument('myfile.txt')

myFile.txt 是否应该将标记作为列表列表或每个文档或字符串的每一行中的单独列表?

For eg- 我有 2 个文件。

Doc 1:机器学习是计算机科学的一个子领域,从模式识别的研究发展而来。

Doc 2:Arthur Samuel 将机器学习定义为“赋予计算机学习能力的研究领域”。

那么,应该是myFile.txt什么样子呢?

案例1:每行每个文档的简单文本

机器学习是从模式识别研究发展而来的计算机科学的一个子领域

Arthur Samuel 将机器学习定义为让计算机具备学习能力的研究领域

案例 2:包含每个文档标记的列表列表

[ ["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"],

案例3:单独一行中每个文档的标记列表

当我在测试数据上运行它时,我想预测文档向量的句子格式应该是什么?它应该像下面的案例 1 或案例 2 还是其他什么?

model.infer_vector(testSentence, alpha=start_alpha, steps=infer_epoch)

testSentence 应该是:

案例1:字符串

案例2:代币列表

0 投票
1 回答
16270 浏览

python - gensim Doc2Vec vs tensorflow Doc2Vec

我正在尝试比较我的 Doc2Vec 实现(通过 tf)和 gensims 实现。至少从视觉上看,gensim 的表现更好。

我运行以下代码来训练 gensim 模型和下面的代码来训练 tensorflow 模型。我的问题如下:

  1. 我的 Doc2Vec 的 tf 实现是否正确。基本上它应该连接单词向量和文档向量来预测特定上下文中的中间词吗?
  2. gensim中的window=5参数是否意味着我在两边使用两个词来预测中间的词?还是两边都是5。问题是有不少文件长度小于 10。
  3. 关于为什么 Gensim 表现更好的任何见解?我的模型与他们实现它的方式有什么不同吗?
  4. 考虑到这实际上是一个矩阵分解问题,为什么 TF 模型甚至可以得到答案?由于它是一个秩不足的问题,因此有无限的解决方案。<- 最后一个问题只是一个奖励。

根西姆

特遣部队

更新:

在这里查看 jupyter 笔记本(我有两个模型都在这里工作和测试)。在最初的分析中,感觉 gensim 模型的表现仍然更好。

0 投票
1 回答
862 浏览

python - id 未找到 gensim doc2vec 文档

这是我训练我的 doc2vec 模型的代码

现在让我们来看看FileDocIterator

现在我明白在这个实现中没有使用短语,但请耐心等待,让我们看看数据的样子。这是第一个数据点

我的理解是id,55c37f730d03382935e12767应该是文档的id,所以做以下应该给我一个docVector。

相反,这是输出的内容。

试图获得最相似的结果如下

我想了解的是如何保存文档向量以及使用什么 id。我的方法的哪一部分在上面不起作用?

现在这里有一些有趣的事情,如果我执行以下操作,我会返回类似的文档向量,但它们对我没有任何意义。

0 投票
1 回答
1216 浏览

python - 如何提取用于 Doc2Vec 的单词

我正在使用推文准备一个 Doc2Vec 模型。每条推文的单词数组都被视为一个单独的文档,并被标记为“SENT_1”、SENT_2”等。

我希望找到与给定推文类似的推文,例如“SENT_2”。如何?

我得到类似推文的标签:

它打印为:

但是给定一个标签,我如何获得原始推文单词/句子?例如,“SENT_3497”的推文是什么。我可以向 Doc2Vec 模型查询这个吗?

0 投票
1 回答
1393 浏览

python - doc2vec的Python简单实现?

我正在尝试从 gensim 实现 doc2vec,但有一些错误,并且网络上没有足够的文档或帮助。这是我的工作代码的一部分:

我的 txt 文件是什么样的:

初始化模型

示例打印输出:

这是错误所在:

知道为什么吗?

0 投票
1 回答
536 浏览

python - python gensim 从 doc2vec taggedlinedocument 中检索原始句子

我正在使用 Gensim 的 doc2vec 方法读取我的文本文件,其中每行包含 1 个句子。它将我的文件读入字典,其中键是术语的标记列表,值是句子编号。

这是我的代码:

新文件的示例输出:

然后我将该列表输入 gensim 的 taggedlinedocument 函数:

示例输出:

问题是,给定标签 id(示例 0),我如何取回原始句子?

0 投票
2 回答
2157 浏览

nlp - gensim如何计算doc2vec段落向量

我正在阅读这篇论文http://cs.stanford.edu/~quocle/paragraph_vector.pdf

它指出

“段落向量和词向量被平均或连接以预测上下文中的下一个词。在实验中,我们使用连接作为组合向量的方法。”

串联或平均如何工作?

示例(如果第 1 段包含 word1 和 word2):

同样来自这张图片:

据称:

段落标记可以被认为是另一个词。它充当记忆,记住当前上下文或段落主题中缺少的内容。出于这个原因,我们经常将此模型称为段落向量的分布式内存模型(PV-DM)。

段落标记是否等于等于 的段落向量on

在此处输入图像描述

0 投票
1 回答
482 浏览

similarity - 词向量和段落向量查询

我试图了解 Gensim 实现中 word2vec 和 doc2vec 向量之间的关系。在我的应用程序中,我使用相同的标签(主题)标记多个文档,我正在使用 dbow_words=1 在我的语料库上训练一个 doc2vec 模型,以便也训练词向量。我已经能够以这种方式获得单词和文档向量之间的相似性,这对于 ex 来说确实很有意义。获取类似于单词的文档标签- doc2vec_model.docvecs.most_similar(positive = [doc2vec_model["management"]], topn = 50))

然而,我的问题是关于 word2vec 和 doc2vec 向量之间计算相似度的理论解释。假设在具有相同维度 (d = 200) 的相同语料库上进行训练时,始终可以比较词向量和文档向量以找到文档标签的相似词或单词的相似文档标签,是否可以安全地假设。任何建议/想法都是最受欢迎的。

问题 2:我的其他问题是关于最终 word2vec 模型中单词的高/低频率的影响。如果 wordA 和 wordB 在特定的文档标签(集合)中具有相似的上下文,但 wordA 的频率比 wordB 高得多,那么 wordB 与相应的文档标签是否具有更高的相似度分数。我正在尝试通过以时间方式对语料库进行采样来训练多个 word2vec 模型,并且想知道随着单词变得越来越频繁的假设,假设上下文相对保持相似,与文档标签的相似度得分也会增加。我做这个假设错了吗?非常欢迎任何建议/想法。

谢谢,马尼什