我有200多个pdf的数据集,我将其转换为语料库。我将R的TM包用于文本预处理和挖掘。 到目前为止,我已经成功创建了DTM(文档术语矩阵),并且可以找到x个最常出现的术语。 但是,我研究的目的是检查语料中是否使用了某些术语。我不是在寻找最常用的术语,而是有自己的术语列表,我想检查它们是否出现以及是否出现了多少次。
到目前为止,我已经尝试过:
function <- content_transformer(function(x, pattern)regmatches(x,gregexpr(pattern, x, perl=TRUE, ignore.case = TRUE)))
keep = "word_1|word_2"
tm_map(my_corpus, function, keep)[[1]]
以及这些:
str_detect(my_corpus, "word_1", "word_2" )
str_locate_all(my_corpus, "word_1", "word_2")
str_extract(my_corpus, "funds")
最后一个似乎最接近输出: [1]“资金” NA NA
似乎都没有给我我需要的东西。
答案 0 :(得分:1)
创建DocumentTermMatrix时,可以使用选项dictionary
。在示例代码中查看其工作方式。如果您不需要每个文档的字数统计,一旦以documenttermmatrix形式或data.frame形式,就可以使用聚合函数。
library(tm)
data("crude")
crude <- as.VCorpus(crude)
crude <- tm_map(crude, content_transformer(tolower))
my_words <- c("oil", "corporation")
dtm <- DocumentTermMatrix(crude, control=list(dictionary = my_words))
# create data.frame from documenttermmatrix
df1 <- data.frame(docs = dtm$dimnames$Docs, as.matrix(dtm), row.names = NULL)
head(df1)
docs corporation oil
1 127 0 5
2 144 0 11
3 191 0 2
4 194 0 1
5 211 0 1
6 236 0 7