在 R 中使用 TM 包的 VCorpus 时遇到的错误

Posted

技术标签:

【中文标题】在 R 中使用 TM 包的 VCorpus 时遇到的错误【英文标题】:Error faced while using TM package's VCorpus in R 【发布时间】:2018-05-04 12:43:58 【问题描述】:

我在使用 R 处理 TM 包时遇到以下错误。

library("tm")
Loading required package: NLP
Warning messages:
1: package ‘tm’ was built under R version 3.4.2 
2: package ‘NLP’ was built under R version 3.4.1 

corpus <- VCorpus(DataframeSource(data))

错误:all(!is.na(match(c("doc_id", "text"), names(x)))) 不正确

尝试了各种方法,例如重新安装软件包,使用新版本的 R 更新,但错误仍然存​​在。对于相同的数据文件,相同的代码在具有相同 R 版本的另一个系统上运行。

【问题讨论】:

【参考方案1】:

当我将tm 包更新到 0.7-2 版本时,我遇到了同样的问题。 我查找了DataframeSource()的详细信息,它提到:

第一列必须命名为“doc_id”并包含每个文档的唯一字符串标识符。第二列必须命名为“文本”。

详情

数据框源将数据框 x 的每一行解释为一个文档。第一列必须命名为“doc_id”并包含每个文档的唯一字符串标识符。第二列必须命名为“text”,并包含一个表示文档内容的“UTF-8”编码字符串。可选的附加列用作文档级元数据。

我用下面的代码解决了:

df_cmp<- read.csv("test_file.csv",stringsAsFactors = F)

df_title <- data.frame(doc_id=row.names(df_cmp),
                       text=df_cmp$English.title)

您可以尝试将列名更改为doc_idtext

【讨论】:

【参考方案2】:

我在使用BTM 包时也遇到了这个错误。正如Eva 所指出的,它可能与您的列标题有关(必须分别为doc_idtext)。但是,就我而言,这是因为我的 doc_id 值已损坏并且不再是唯一的。如果错误仍然存​​在,请尝试检查您的 doc_id 值以确保它们正确递增。

【讨论】:

以上是关于在 R 中使用 TM 包的 VCorpus 时遇到的错误的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中使用 LDA 和 tm 进行文本分析

将语料库从 quanteda 转换为 tm

R文本挖掘之tm包

R 安装包遇到问题 loadNamespace()里算'rJava'时.onLoad失败了 rJava 包的安装与载入

R tm 包余弦相似度

安装 TM 包时依赖项“slam”不可用