R tm 转换数据框中的文本,保留其他列数据



我想给我发短信,出于多种原因,我构建了一个数据框,其中我在一列中有单词,在第二个示例中有频率:

 words freq
 Have   123
 have    5
 having 4589

请注意,我们可以快速查看频率是否非常大,以这种方式进行转换可能更有效,而不是使用某些单词重复多次的语料库。

我想用tm来转换使用tolowerstemDocument等的单词

我知道我可以将数据框中的words列拉到语料库中,但随后我将丢失频率信息。

我想得到:

 words freq
 have   123
 have    5
 have  4589

然后我想我可以使用setDT,dplyr包或聚合来获得:

words freq
have  4717

我计划在大型数据帧上执行此操作。谢谢

我确实尝试模仿 tm:读取数据框,保留文本 ID,构建 DTM 并连接到其他数据集

这里不需要文本分析包,您可以使用 SnowballC 包中的tolower()wordStem()来完成。 使用data.table也使其非常快。

require(data.table)
dt <- data.table(words = c("Have", "have", "having"),
                 freq = c(123, 5, 4589))
# transform to lowercase
dt[, words := tolower(words)]
# stem the words
dt[, words := SnowballC::wordStem(words)]
dt
##    words freq
## 1:  have  123
## 2:  have    5
## 3:  have 4589
# aggregate on same lowercased stems
dt[, list(freq = sum(freq)), by = words]
##    words freq
## 1:  have 4717

我的数据表版本:

packageVersion("data.table")
## [1] ‘1.9.6’

最新更新