我想发布我的文字,出于多种原因,我建立了一个数据框,我在第二个例子中有一个列和频率的单词:
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
答案 0 :(得分:3)
此处不需要文本分析包,您可以使用 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’