从df创建包含文档名称的语料库

时间:2018-05-05 12:46:32

标签: r quanteda

我用readtext包将所有文本文件读成df。

df <- readtext(directory, "*.txt")

.txt文件存储在带有doc_id(文档名称)和文本(内容)的df中。

在我升级到quanteda的最新版本之前,当我使用以下语句创建语料库时doc_id存储在语料库对象中:

corpus <- corpus(df)

但是现在这已不再适用了,语料库对象的文档&#39; -df只存储&#39;文本&#39; - 值,而不是{{1} } - 值了。

如何将doc_id取回我的语料库对象?

1 个答案:

答案 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()<-将来会有效,但语料库的内部可能会发生变化。