我用readtext包将所有文本文件读成df。
df <- readtext(directory, "*.txt")
.txt文件存储在带有doc_id
(文档名称)和文本(内容)的df中。
在我升级到quanteda的最新版本之前,当我使用以下语句创建语料库时doc_id
存储在语料库对象中:
corpus <- corpus(df)
但是现在这已不再适用了,语料库对象的文档&#39; -df只存储&#39;文本&#39; - 值,而不是{{1} } - 值了。
如何将doc_id
取回我的语料库对象?
答案 0 :(得分:1)
这是因为我们在v1.2.0之前修复了bug。从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()<-
将来会有效,但语料库的内部可能会发生变化。