这个问题与我之前的问题有关。以相同的方式处理以空格分隔的单词
将其单独发布,因为它可以帮助其他用户轻松找到它。
问题是关于目前按包term document matrix
计算的方式。tm
我想稍微调整一下,如下所述。
目前,任何术语文档矩阵都是通过在文档中查找单词“milky”作为单独的单词(而不是字符串)来创建的。例如,让我们假设 2 个文档
document 1: "this is a milky way galaxy"
document 2: "this is a milkyway galaxy"
根据当前算法的工作方式(tm
包),“milky”将在第一个文档中找到,但在第二个文档中找不到,因为该算法将术语milky
作为单独的单词查找。但是,如果该算法milky
像函数grepl
一样查找字符串,它也会在第二个文档中找到术语“milky”。
grepl('milky', 'this is a milkyway galaxy')
TRUE
有人可以帮我创建一个满足我要求的术语文档矩阵(即能够milky
在两个文档中找到术语。请注意,我不想要一个特定于单词的解决方案,或者milky
,我想要一个通用的解决方案,我将更大规模地申请处理所有此类案件)?即使解决方案不使用tm
包,也可以。我只需要最终得到一个满足我要求的术语文档矩阵。最终,我希望能够获得一个术语文档矩阵,以便其中的每个术语都应该在相关文档的所有字符串中作为字符串(而不仅仅是单词)进行查找(grepl
例如计算术语文档矩阵时的功能)。
我用来获取术语文档矩阵的当前代码是
doc1 <- "this is a document about milkyway"
doc2 <- "milky way is huge"
library(tm)
tmp.text<-data.frame(rbind(doc1,doc2))
tmp.corpus<-Corpus(DataframeSource(tmp.text))
tmpDTM<-TermDocumentMatrix(tmp.corpus, control= list(tolower = T, removeNumbers = T, removePunctuation = TRUE,stopwords = TRUE,wordLengths = c(2, Inf)))
tmp.df<-as.data.frame(as.matrix(tmpDTM))
tmp.df
1 2
document 1 0
huge 0 1
milky 0 1
milkyway 1 0
way 0 1