r - 以相同方式处理空格分隔的单词

标签 r text-mining tm corpus

我试图查找同时出现在多个文档中的单词。

让我们举个例子。

doc1: "this is a document about milkyway"
doc2: "milky way is huge"

正如您在上面的两个文档中看到的那样,两个文档中都出现了单词“milkyway”,但是在第二个文档中,术语“milkyway”由空格隔开,而在第一个文档中则没有。

我正在执行以下操作以获取R中的文档术语矩阵。
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

根据上面的矩阵,术语milkyway仅出现在第一个文档中。

我希望以上矩阵中的“milkyway”一词在两个文档中都能得到1。这只是一个例子。我需要对许多文档进行此操作。最终,我希望能够以类似的方式处理此类单词(“milkyway”和“milky way”)。

编辑1:

我是否可以强制术语文档矩阵以这样一种方式进行计算,即对于它要查找的任何单词,它都不应仅在字符串中而是在字符串中将其作为单独的单词来查找?例如,一个术语是milky,并且有一个文档this is milkyway,因此此处当前在此文档中不存在milky,但是如果该算法在字符串中查找有问题的单词,它也会在字符串milky中找到单词milkyway,因此单词milkyway都将计入我的两个文档中(前面的示例)。

编辑2:

最终,我希望能够计算文档之间的相似度余弦索引。

最佳答案

您将需要先将文档转换为原始单词表示形式的文件包。原始词与一组词匹配的地方。原始词也可以在语料库中。

例如:

milkyway -> {milky, milky way, milkyway} 
economy -> {economics, economy}
sport -> {soccer, football, basket ball, basket, NFL, NBA}

您可以在使用同义词字典和像levenstein这样的编辑距离来计算余弦距离之前,先构建这样的字典,以完成同义词字典。

计算“运动”键涉及更多。

关于r - 以相同方式处理空格分隔的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099621/

相关文章:

R - 一次更改 1 行值的函数

r - 在 R 中使用 tm 包计数器 ngram

r - 使用 R 的 Twitter 挖矿 (twitteR + tm) : error using tolower conversion

r - 绘制 LDA 主题随时间的演变

r - 使用 sapply() 在两个参数上循环 uniroot()

r - 如何获得J48尺寸和叶子数量

R tm 包创建 N 个最频繁项的矩阵

r - 使用 R 进行 CPU 和内存高效的 NGram 提取

r - 过滤因子列时停止 Shiny DT 列宽度跳跃

基于Java的Word映射(语义)应用程序