问题标签 [term-document-matrix]

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 投票
0 回答
1501 浏览

r - R文本挖掘包DocumentTermMatrix在控制列表中有一个字典占用太多内存

我注意到它DocumentTermMatrix(myCorpus, control=list(dictionary=myDict))消耗的内存比DocumentTermMatrix(myCorpus)

为什么会这样?

有什么线索吗?

这是代码片段:

现在这是我的问题:

我猜有内存泄漏和可能的错误。

0 投票
1 回答
5389 浏览

r - R tm 包创建N个最常见术语的矩阵

我使用R 中的包termDocumentMatrix创建了一个。tm

我正在尝试创建一个包含 50 个最常出现的术语的矩阵/数据框。

当我尝试转换为矩阵时,出现此错误:

所以我尝试使用 Matrix 包转换为稀疏矩阵:

我尝试使用以下方法访问 tdm 的不同部分:

这是其他一些信息:

我的理想输出是这样的:

有什么建议么?

0 投票
2 回答
1387 浏览

matlab - MATLAB nnmf() - 大型术语文档矩阵 - 内存和速度问题

我有一个很大的术语文档矩阵,想使用 matlab 提供的非负矩阵分解函数。问题是在第 1 次迭代之后,内存使用率迅速上升并达到顶峰(我的系统有 6GB),另一方面,CPU 使用率水平变得非常低(大约 1%-5%)。整个系统的行为就像它已经崩溃一样,只有等待很长时间才能完成第二次迭代。(请注意,要获得好的结果需要更多的迭代)。

问题:

如果有人对此有任何经验,或者使用比我更大的矩阵运行 nnmf(),我真的很想知道他/她实际上是如何克服上述问题的。

另外:我用较小的矩阵(大约 7000x1800)完成了这个,没有问题。我使用稀疏矩阵是因为术语文档矩阵有很多零元素,这有助于减少需要存储的空间。例如,在我的情况下,术语文档矩阵具有14608 * 18828 = 275039424元素和sum(sum(spa~=0)) = 1312582非零元素:

0 投票
1 回答
1146 浏览

statistics - PCA中通过term document matrix构造的协方差矩阵有什么意义?

我正在研究神经网络,为了减少通过文档构造的术语-文档矩阵的维度以及其中包含 tf-idf 值的各种术语,我需要应用 PCA。像这样的东西

PCA 的工作原理是获取数据的平均值,然后减去平均值,然后对协方差矩阵使用以下公式

令矩阵 M 为维度为 NxN 的术语-文档矩阵

协方差矩阵变为

然后我们计算特征值和特征向量作为神经网络中的特征向量。我无法理解的是协方差矩阵的重要性以及它找到协方差的维度。

因为如果我们考虑简单的二维 X,Y,就可以理解。这里关联了哪些维度?

谢谢

0 投票
4 回答
66172 浏览

r - 使用 tm_map(..., tolower) 将文本转换为小写时出错

我尝试使用tm_map. 它给出了以下错误。我怎样才能解决这个问题?

0 投票
1 回答
1354 浏览

node.js - 如何有效地计算文档流中文档之间的相似度

我收集文本文档(在 Node.js 中),其中一个文档i表示为单词列表。考虑到新文档以文档流的形式出现,计算这些文档之间相似度的有效方法是什么?

我目前对每个文档中单词的归一化频率使用 cos-similarity。由于可扩展性问题,我不使用 TF-IDF(词频,逆文档频率),因为我获得了越来越多的文档。

最初

我的第一个版本是从当前可用的文档开始,计算一个大的 Term-Document 矩阵A,然后计算S = A^T x AS(i, j)在通过norm(doc(i))和归一化之后norm(doc(j)))文档之间的 cos-similarityi以及j其词频分别为doc(i)doc(j)

对于新文件

收到新文件时该怎么办doc(k)?好吧,我必须计算这个文档与之前所有文档的相似度,这不需要构建整个矩阵。我可以取doc(k) dot doc(j)所有之前的内积j,结果是S(k, j),这很好。

麻烦

  1. SNode.js 中的计算真的很长。实在是太长了!所以我决定创建一个 C++ 模块,它可以更快地完成整个事情。确实如此!但我等不及了,我应该能够使用中间结果。而我所说的“不等待”的意思是

    一个。等待计算完成,但也
    b。等待构建矩阵A(这是一个大矩阵)。

  2. 计算 newS(k, j)可以利用这样一个事实,即文档中的单词比所有给定单词的集合(我用来构建整个矩阵A)少得多。因此,在 Node.js 中执行此操作看起来更快,避免占用大量额外资源来访问数据。

但是有没有更好的方法来做到这一点?

注意:我开始计算的原因S是我可以轻松地A在 Node.js 中构建,在那里我可以访问所有数据,然后在 C++ 中进行矩阵乘法并将其返回到 Node.js 中,这大大加快了整个过程. 但现在计算S变得不切实际,它看起来毫无用处。

注2:是的,我不必计算整体S,我可以只计算右上角的元素(或左下角的元素),但这不是问题。时间计算问题不是这个顺序。

0 投票
2 回答
9168 浏览

r - 每项频率 - R TM DocumentTermMatrix

我对 R 很陌生,不能完全理解 DocumentTermMatrixs。我有一个使用 TM 包创建的 DocumentTermMatrix,其中包含术语频率和术语,但我不知道如何访问它们。

理想情况下,我想:

目前我的代码是:

这是 str(dtm) 的输出

谢谢,

-一个

0 投票
1 回答
1278 浏览

nlp - TF-IDF 是否存在比使用词频向量更糟糕的情况?

我现在正在做文本分类。TF-IDF 是否存在比使用词频向量更糟糕的情况?怎么解释?谢谢

0 投票
3 回答
44677 浏览

python - 使用 NLTK 的高效术语文档矩阵

我正在尝试使用 NLTK 和 pandas 创建一个术语文档矩阵。我写了以下函数:

运行它

它适用于语料库中的几个小文件,但是 当我尝试使用包含 4,000 个文件(每个大约 2 kb)的语料库运行它时,它给了我一个MemoryError 。

我错过了什么吗?

我正在使用 32 位 python。(我在 Windows 7、64 位操作系统、Core Quad CPU、8 GB RAM 上)。我真的需要为这种大小的语料库使用 64 位吗?

0 投票
2 回答
774 浏览

python - 使用 python 从 csv 读取术语文档矩阵

经典 csv 阅读器不适用于术语文档数组的原因是 csv 文件的第一列是术语,而不是值。因此,该文件具有以下语法:

我需要构建一个字典,其键是 label1、label3 等...而值是列向量(这里是:dict[label1]-> 1,0、dict[label2] -> 0,0 等) ,这意味着这些术语对我来说完全没用。

我已经实现了一个自定义解决方案,如下所示:

然而,用我的笔记本电脑读取 8 个 csv 文件(总计:12MB)需要 90 多分钟。

有谁知道更有效的方法来处理这个问题?