问题标签 [text2vec]

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 回答
1052 浏览

r - 从词向量到文档向量 [text2vec]

我想使用 text2vec 中实现的 GloVe 词嵌入来执行监督回归/分类。我在 text2vec 主页上阅读了有关如何生成词向量的有用教程。但是,我无法掌握如何进一步进行,即应用或转换这些词向量并将它们附加到每个文档,这样每个文档都由一个向量表示(我假设来自其组成词的向量),用作分类器的输入。我在网上遇到了一些针对简短文档的快速修复,但是我的文档相当冗长(电影字幕),并且似乎没有任何关于如何处理此类文档的指导 - 或者至少没有与我的理解水平相匹配的指导;我有使用 n-gram、字典和主题模型的经验,

谢谢!

0 投票
1 回答
469 浏览

r - 在 text2vec 中使用 hash_vectorizer 的 ngram

我试图在 text2vec 中使用 hash_vectorizer 函数创建 ngram,当我注意到它不会改变我的 dtm 的尺寸而改变值时。

在上面的代码中,无论是 2-10 还是 9-10,尺寸都不会改变。

在上面的代码中,尺寸发生了变化,但我也想使用 hash_vectorizo​​r 因为它节省了空间。我该如何使用它?

0 投票
1 回答
52 浏览

r - 在 text2vec 中的 2 个组合 DTM(通过 cBind)上运行 glmnet 时出错

我使用相同的数据集在 text2vec 中创建了一个 tf-idf DTM 和一个基于 n-gram 的 DTM。现在,我可以分别在它们每个上运行 glmnet,但是当我通过 cBind 将这两个 DTM 结合起来时,glmnet 给了我一个错误:

dtm_train_tfidf = (19579 * 27511) 矩阵,和

dtm_train_ngram = (19579 * 16384) 矩阵。

这意味着它们具有相同的确切行数,我可以使用 cBind(用于矩阵的 cbind)组合它们并获得一个大矩阵,我应该能够在该矩阵上运行 glmnet。只有我无法运行它并且我收到此错误。我该如何纠正?

0 投票
0 回答
143 浏览

text2vec - 为下游任务转换 dgeMatrix

我正在尝试基于来自 text2vec 的 Glove 模型对句子嵌入进行聚类。我像这样使用手套模型生成嵌入(我以标准方式创建迭代器、词汇等)。

结果对象属于 dgeMatrix 类,据我所知,它相当于矩阵类。dgeMatrix 类不用于许多下游任务,所以我想转换矩阵。但是,该对象有 6GB 大,我在将矩阵转换为数据框甚至文本文件以进行进一步处理时遇到问题。

理想情况下,我会在 Spark 中使用此矩阵进行进一步分析,例如 k-means 聚类。我的问题是将矩阵用于下游任务的最佳策略是什么。

a)转换为矩阵类或数据框 b)将矩阵写入文件?c) 完全不同的东西

我在 Google Cloud 上运行模型,并拥有一台 32gb 内存和 28 个 cpu 的机器。

谢谢你的帮助。

0 投票
1 回答
136 浏览

r - 在 Text2vec 中实现 Arora 2017

我正在尝试使用 text2vec复制 Arora 2017 ( https://github.com/PrincetonML/SIF / https://openreview.net/forum?id=SyK00v5xx )。作者通过平均词嵌入并减去第一个主成分来计算句子嵌入。

感谢 text2vec 的作者,我可以计算手套嵌入并对其进行平均。下一步是计算主成分 /svd 并从嵌入中减去第一个成分。

我可以使用 irlba 包(我相信它也在 tex2vec 中使用)计算 svd,但是接下来我被困在如何准确地从平均词嵌入中减去主成分。

论文中的python代码(https://github.com/PrincetonML/SIF/blob/master/src/SIF_embedding.py)具有以下功能

我的 R 代码是

例如,如果我有 1K 个句子 x 300 个变量,我运行 irlba 函数得到三个矩阵。例如,这些具有 4 个分量 x 1K 观察值。

如何转换此函数的输出(1K x 变量/组件),以便我可以从句子嵌入(1K x 300 变量)中减去组件?

谢谢!

0 投票
1 回答
95 浏览

r - R : text2vec DTM 的文档编号与原始文档编号不正确

我是一个经常使用 text2vec 的学生。

直到去年,我使用这个程序没有任何问题。

但是今天当我使用 Parallel 功能构建 DTM 时,DTM 的文档编号与原始文档编号不正确。

DTM 的文档数与原始文档数除以注册核心相匹配。所以怀疑是并行处理后没有合并结果。

我测试的附加代码。

我在 Vignette 中检查了 text2vec itoken 函数。我找到了测试itoken中并行处理的示例,并且处理得很好,没有错误。

在这个过程中,如何使用停用词和最小频率功能?

我期待着真诚的回答。

感谢您的关注。

0 投票
1 回答
515 浏览

r - 用 text2vec 匹配文档——缩放问题

我在缩放文本匹配程序时遇到了一些问题。我正在使用 text2vec,它提供了非常好的和快速的结果。

我遇到的主要问题是处理由 text2vec::sim2() 函数返回的大矩阵。

首先,我的硬件/操作系统设置的一些细节:Windows 7 有 12 核约 3.5 GHz 和 128 Gb 内存。它是一台相当不错的机器。

其次,我的 R 程序试图实现的一些基本细节。

我们有一个包含 1000 万个唯一规范地址的数据库,用于地址中的每个房屋/企业。这些参考地址还具有每个条目的纬度和经度信息。

我正在尝试将这些参考地址与我们数据库中的客户地址进行匹配。我们有大约 600,000 个客户地址。这些客户地址的质量不好。一点都不好!它们存储为单个字符串字段,对输入的检查绝对为零。

匹配这些地址的技术策略非常简单。创建客户地址和参考地址的两个文档术语矩阵 (DTM),并使用余弦相似度找到与特定客户地址最相似的参考地址。一些客户地址非常差,导致余弦相似度非常低——因此,将为这些地址分配“不匹配”。

尽管是一个非常简单的解决方案,但获得的结果非常令人鼓舞。

但是,我在缩放事物时遇到问题......?我想知道是否有人有任何建议。

下面有我的代码的副本。它很简单。显然,我不能包含真实数据,但它应该让读者清楚地了解我正在尝试做什么。

部分 A - 即使在完整的 600,000 * 1000 万输入数据集上也能很好地工作。

部分 B - text2vec::sim2() 函数导致 R studio 在词汇量超过约 140,000 个标记(即列)时关闭。为了避免这种情况,我以大约 200 个为单位处理客户地址。

部分 C - 这是最昂贵的部分。当处理 200 个块的地址时,SECTION A 和 SECTION B 大约需要 2 分钟。但是 SECTION C,使用(我认为是超级快速的功能)需要大约 5 分钟来处理一个 1000 万行 * 200 列的矩阵。

结合起来,SECIONS A:C 大约需要 7 分钟来处理 200 个地址。由于有 600,000 个地址需要处理,这将需要大约 14 天的时间来处理。

他们是让这段代码运行得更快的想法吗?

0 投票
1 回答
195 浏览

r - 标准化主题文档概率 text2vec R

在使用 R 中的 text2vec 包运行 lda 模型后,我试图找出主题文档的概率。

以下命令生成模型:

quantdfm 是使用 quanteda 包的 dtm,我将其插入 $fit_transform 方法。

我注意到 doc_topic_distr 包含主题文档概率(甚至没有要求规范化)。它是否正确?因为在之前的帖子中:如何从 text2vec LDA 获取主题概率表,Dmitriy Selivanov 要求使用以下方法得出这样的概率:

而当我使用与上面相同的命令时, doc_topic_distr 和 doc_topic_prob 具有相同的值(我认为前者包含整数而不是后者中的分数)。

请建议这是否是代码的预期行为,或者我在这里遗漏了一些东西。

谢谢。

0 投票
2 回答
373 浏览

r - 如何在 text2vec 中包含停用词(术语)

text2vec包中,我使用 create_vocabulary 函数。例如:我的文本是“这本书非常好”,假设我没有使用停用词和 1L 到 3L 的 ngram。所以词汇术语将是

这本书,非常非常好,这本书……这本书非常非常好。我只想删除术语“书非常”(以及使用向量的许多其他术语)。因为我只想删除一个短语,所以我不能使用停用词。我编写了以下代码:

当我执行上述步骤时,属性中的元信息会在 vocab_mod 中丢失,因此无法在create_dtm.

0 投票
1 回答
34 浏览

text2vec - 从磁盘上的大文本文件创建词汇表时出错

我尝试从https://cran.r-project.org/web/packages/text2vec/vignettes/files-multicore.html执行示例,但使用我的文件“文本” - 3.7Gb 纯文本,从维基百科 XML 转储构建来自这里的 Perl 脚本 - http://mattmahoney.net/dc/textdata.html

这会导致错误:

我有 8Gb RAM,从这个文件创建 word2vec 模型没有任何错误。