问题标签 [quanteda]

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

r - R:使用新数据重新创建相同的文档术语矩阵

我在帖子中有完全相同的问题,除了我使用#quanteda 为 svm 模型生成一个 dfm(因为我需要有完全相同的 dfms 用于交叉验证预测)How to recreate same DocumentTermMatrix with new (test) data

但是,我的训练集(trainingtfidf,如文章中的粗略1.dtm)在我的测试集中有 170000+ 个文档和 670000+ 个(testtfidf,如文章中的粗略2.dtm),因此我无法将我的新测试集转换为矩阵或数据框:

因此,我尝试直接将其作为 dfm 进行:

但它给了我最后一行的错误:

任何人都可以帮我解决这个问题吗?我已经苦苦挣扎了两天,我很接近完成这项工作!谢谢!

0 投票
2 回答
1102 浏览

r - 在 R 中将元数据添加到 STM

我在使用 R 中的 STM 包时遇到问题。我在 Quanteda 中建立了一个语料库,我想将其转换为 STM 格式。我已将元数据保存为独立的 CSV 文件,并且我想要将文本文档与元数据合并的代码。readCorpus() 和 "convert() 函数不会自动将元数据信息添加到语料库中。

这是它在 Quanteda 中的样子:

有没有办法使用 STM 包做同样的事情?

0 投票
1 回答
3359 浏览

r - 在 R 中使用 Quanteda 时,从文本语料库中删除非 ASCII 字符的最佳方法是什么?

我急需。我有一个已转换为通用语言的语料库,但有些单词没有正确转换为英语。因此,我的语料库有非 ASCII 字符,例如U+00F8.

我正在使用 Quanteda,并且使用以下代码导入了我的文本:

我的语料库包含 166 个文档。将文档导入 R 后,摆脱这些非 ASCII 字符的最佳方法是什么?

0 投票
1 回答
1968 浏览

r - 使用卡方检验在文档特征矩阵中选择特征

我正在使用自然语言处理进行短信挖掘。我使用quanteda包来生成文档特征矩阵(dfm)。现在我想使用卡方检验进行特征选择。我知道已经有很多人问过这个问题了。但是,我找不到相关的代码。(答案只是给出了一个简短的概念,如下所示:https ://stats.stackexchange.com/questions/93101/how-can-i-perform-a-chi-square-test-to-do-feature-selection-在-r )

我了解到我可以chi.squaredFSelector包中使用,但我不知道如何将此函数应用于 dfm 类对象(trainingtfidf如下)。(在手册中显示,它适用于预测变量)

谁能给我一个提示?我很感激!

示例代码:

0 投票
2 回答
1078 浏览

r - R:当一个文档中有多个句子时使用dfm查找ngram

我有一个大数据集(> 100 万行),每一行都是一个多句子文本。例如以下是 2 行的示例:

我试图做的是提取每行中的二元词项(“。”将能够分隔 ngram 项)。如果我只是使用 dfm 函数:

这些是我得到的条款:

这些是我所期望的,基本上是“。” 被跳过并用于分隔术语:

相信编写慢循环也可以解决这个问题,但鉴于它是一个巨大的数据集,我更喜欢类似于 quanteda 中的 dfm() 的有效方法来解决这个问题。任何建议,将不胜感激!

0 投票
1 回答
1571 浏览

r - Working with text classification and big sparse matrices in R

I'm working on a text multi-class classification project and I need to build the document / term matrices and train and test in R language.

I already have datasets that don't fit in the limited dimensionality of the base matrix class in R and would need to build big sparse matrices to be able to classify for example, 100k tweets. I am using the quanteda package, as it has been for now more useful and reliable than the package tm, where creating a DocumentTermMatrix with a dictionary, makes the process incredibly memory hungry with small datasets. Currently, as I said, I use quanteda to build the equivalent Document Term Matrix container that later on I transform into a data.frame to perform the training.

I want to know if there is a way to build such big matrices. I have been reading about the bigmemory package that allows this kind of container but I am not sure it will work with caret for the later classification. Overall I want to understand the problem and build a workaround to be able to work with bigger datasets, as the RAM is not a (big) problem (32GB) but I'm trying to find a way to do it and I feel completely lost about it.

0 投票
1 回答
7367 浏览

r - 使用 quanteda 逐步创建 dfm

我想分析一个大(n = 500,000)个文档语料库。我正在使用quanteda预期 tm_map()from更快tm。我想逐步进行,而不是使用dfm(). 我有这样做的理由:在一种情况下,我不想在删除停用词之前进行标记,因为这会导致许多无用的二元组,在另一种情况下,我必须使用特定于语言的程序对文本进行预处理。

我希望实现这个序列:
1)删除标点符号和数字
2)删除停用词(即在标记化之前以避免无用的标记)
3)使用 unigrams 和 bigrams 进行标记
4)创建 dfm

我的尝试:

奖金问题 如何删除稀疏令牌quanteda?(即相当于removeSparseTerms()in tm


更新 根据@Ken的回答,这里是逐步进行的代码quanteda

1)删除自定义标点和数字。例如,请注意 ie2010 语料库中的“\n”

关于人们可能更喜欢预处理的原因的进一步说明。我目前的语料库是意大利语,这种语言的文章与带有撇号的单词相关联。因此,顺子dfm()可能导致不精确的标记化。例如:

将为同一个单词(“un'abile”和“l'abile”)生成两个单独的标记,因此这里需要一个额外的步骤gsub()

2) 在quanteda标记化之前,无法直接在文本中删除停用词。在我之前的示例中,必须删除“l”和“un”,以免产生误导性的二元组。这可以tmtm_map(..., removeWords).

3) 代币化

4)创建dfm:

5)去除稀疏特征

0 投票
1 回答
435 浏览

r - 转换 quanteda dfmSparse matrix->data.frame->h2o 添加了不需要的 NaN 初始行

我有一个用 quanteda 创建的 10025x1417 TFIDF dfm矩阵。(实际类是 dfmSparse ,它是dfm-matrix的子类)。当我使用 as.data.frame 然后 as.h2o 转换为 h2o 时,我错误地得到 1002 6 x1417,并带有不需要的额外第一行 NaN。出于性能原因,我不想使用完整的密集矩阵创建临时 df 。

代码如下(我无法在小玩具数据上重现):

0 投票
1 回答
153 浏览

r - quanteda 没有从 corpusSource 对象创建语料库

我正在使用带有 4Gb RAM 的 32 位操作系统的 Windows 7,由于 32 位限制,只能访问 3Gb。我关闭了其他所有东西,可以看到在开始之前我有大约 1Gb 的缓存和 1Gb 可用。“空闲”内存有所不同,但有时为 0。

使用 quanteda - 我正在使用 textfile() 命令读取 twitter.txt 文件,该命令成功创建了 157Mb corpusSource 对象。当我下一步使用 corpus() 命令将其转换为“语料库”时,R 会遍历它并创建一个非常小的空文件,其中四个元素都包含 0 ..... 代码和输出如下:

....关于为什么会发生这种情况的任何见解?

0 投票
1 回答
143 浏览

r - Quanteda 中的 corpus() 出现“重复的 row.names”错误

我刚刚升级了我的 Quanteda 版本,我遇到了一个以前没有的错误。

返回:

data.frame 中的错误(文本 = x,row.names = 名称(x),check.rows = TRUE,:重复的 row.names:Spectator_Texts_purged_R.csv

我在 CSV 中搜索了悬挂逗号,甚至将文件缩减为三行:

和:

错误仍然存​​在 - 我错过了什么吗?