R tm 在数据框中转换文本,保留其他列数据
R tm transforming text within data frame keeping other column data
我想给我发短信,出于多种原因,我建立了一个数据框,其中一列中有单词,第二个示例中有频率:
words freq
Have 123
have 5
having 4589
请注意,我们可以快速查看频率是否非常大,这样做可能更有效地转换单词,而不是将某些单词重复多次的语料库。
我想用tm
来转换使用tolower
、stemDocument
等
的单词
我知道我可以将数据框中的 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’
我想给我发短信,出于多种原因,我建立了一个数据框,其中一列中有单词,第二个示例中有频率:
words freq
Have 123
have 5
having 4589
请注意,我们可以快速查看频率是否非常大,这样做可能更有效地转换单词,而不是将某些单词重复多次的语料库。
我想用tm
来转换使用tolower
、stemDocument
等
我知道我可以将数据框中的 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’