使用readtext 读取单个文档时,语料库中只有一个文档。文档中可能有 77k 行,但它仅来自 1 个文档,而不是 77k 文档。如果您检查readtext 的结果,您将在 doc_id 列中仅看到 1 个值,并且所有文本都将位于文本列的单个单元格中。请参阅下面示例中的差异。
library(readtext)
library(quanteda)
DATA_DIR <- system.file("extdata/", package = "readtext")
rt2 <- readtext(paste0(DATA_DIR, "/txt/EU_manifestos/EU_euro_2004_de_PSE.txt"),
docvarsfrom = "filenames",
docvarnames = c("unit", "context", "year", "language", "party"),
encoding = "LATIN1")
rt2
readtext object consisting of 1 document and 5 docvars.
# Description: df[,7] [1 x 7]
doc_id text unit context year language party
<chr> <chr> <chr> <chr> <int> <chr> <chr>
1 EU_euro_2004_de_PSE.txt "\"PES · PSE \"..." EU euro 2004 de PSE
my_corp <- corpus(rt2)
Corpus consisting of 1 document and 5 docvars.
EU_euro_2004_de_PSE.txt :
"PES · PSE · SPE European Parliament rue Wiertz B 1047 Brusse..."
和
rl1 <- readLines(paste0(DATA_DIR, "/txt/EU_manifestos/EU_euro_2004_de_PSE.txt"))
my_corp_rl1 <- corpus(rl1)
my_corp_rl1
Corpus consisting of 100 documents.
text1 :
"PES · PSE · SPE European Parliament rue Wiertz B 1047 Brusse..."
text2 :
""
text3 :
"GEMEINSAM WERDEN WIR STÄRKER Fünf Verpflichtungen für die nä..."
text4 :
"Manifest der Sozialdemokratischen Partei Europas für die Wah..."
text5 :
"PARTY OF EUROPEAN SOCIALISTS · Tel +32 2 284 29 76 · Fax +32..."
text6 :
""
[ reached max_ndoc ... 94 more documents ]
使用readLines,然后使用语料库,将创建一个包含 100 个文档的语料库,但这些只是刚刚读入的行,这不是语料库的正确定义。
corpus_sample 对语料库中的文档进行采样。因此,如果您有 100 个文档,corpus_sample(my_corpus, 50) 将采样 50 个不同的文档。
你需要检查你需要做什么样的采样,文件或功能。如果功能,您需要使用dfm_sample 和margin = "features"。有关更多信息,请参阅 quanteda 中的帮助。如果您需要在文本清理、删除停用词等之后进行采样。