r - 从 df 创建一个语料库,包括文档名称
问题描述
我正在使用 readtext 包将所有文本文件读入 df 。
df <- readtext(directory, "*.txt")
.txt 文件存储在带有doc_id
(文档名称)和文本(内容)的 df 中。
在我升级到最新版本的 quanteda 之前,doc_id
当我使用以下方法创建语料库时,它被存储在语料库对象中:
corpus <- corpus(df)
但是现在这不再起作用了,语料库对象的'documents'-df只存储'texts'-values,而不是-valuesdoc_id
了。
我如何回到我doc_id
的语料库对象中?
解决方案
这是因为我们在 v1.2.0 之前修复了一个错误。从 data.frame 构建语料库时,文档 id 需要一些字段,默认情况下这是readtext doc_id
。
如果您还希望它作为文档变量,您可以这样做。首先,我从readtext包的系统文件中读取了一些文本,作为可重现的示例。
library("readtext")
library("quanteda")
packageVersion("readtext")
## [1] ‘0.50’
packageVersion("quanteda")
## [1] ‘1.2.0’
df <- readtext(paste0(DATA_DIR, "txt/EU_manifestos/*.txt"), encoding = "LATIN1")
df
## readtext object consisting of 17 documents and 0 docvars.
## # data.frame [17 × 2]
## doc_id text
## <chr> <chr>
## 1 EU_euro_2004_de_PSE.txt "\"PES · PSE \"..."
## 2 EU_euro_2004_de_V.txt "\"Gemeinsame\"..."
## 3 EU_euro_2004_en_PSE.txt "\"PES · PSE \"..."
## 4 EU_euro_2004_en_V.txt "\"Manifesto\n\"..."
## 5 EU_euro_2004_es_PSE.txt "\"PES · PSE \"..."
## 6 EU_euro_2004_es_V.txt "\"Manifesto\n\"..."
当我们由此创建语料库时,我们看不到文档变量。
crp <- corpus(df)
crp
## data frame with 0 columns and 17 rows
但是添加它们很简单:
docvars(crp, "doc_id") <- df$doc_id
head(docvars(crp))
## doc_id
## EU_euro_2004_de_PSE.txt EU_euro_2004_de_PSE.txt
## EU_euro_2004_de_V.txt EU_euro_2004_de_V.txt
## EU_euro_2004_en_PSE.txt EU_euro_2004_en_PSE.txt
## EU_euro_2004_en_V.txt EU_euro_2004_en_V.txt
## EU_euro_2004_es_PSE.txt EU_euro_2004_es_PSE.txt
## EU_euro_2004_es_V.txt EU_euro_2004_es_V.txt
请注意,强烈建议您不要通过其 data.frame 元素访问语料库对象的内部df$documents
。将来会使用访问器docvars()
和替换器,但语料库的内部结构可能会发生变化。docvars()<-
推荐阅读
- pdf - 为什么将PDF转换为纯文本如此困难?
- javascript - 使用扩展参数连接字符串的最有效方法
- cuda - 我的 GPU 上的总线程数、块数和网格数。
- javascript - 阻止加载混合活动内容 Mozilla 浏览器
- java - 我如何将多个数组位置及其项目传递给下一个活动并进入下一个活动
- angular - Material Design中如何设计轮播
- database - 如何在 Yii2 中手动在数据库中创建用户?
- vulkan - 当设备未启用几何着色器功能时,vkQueueSubmit() 调用包括一个设置了 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT 位的 stageMask
- c++ - arduino count++ 是否有限制以及如何解决?
- c# - 访问图像文件时抛出 UnauthorizedAccessException