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

R tm transforming text within data frame keeping other column data

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

 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: read in data frame, keep text id's, construct DTM and join to other dataset

这里不需要文本分析包,您可以使用 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

我的 data.table 版本:

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