我有句子向量,比如:
x = c("I like donut", "I like pizza", "I like donut and pizza")
我想计算两个词的组合。理想的输出是一个包含 3 列(word1、word2 和频率)的数据框,应该是这样的:
I like 3
I donut 2
I pizza 2
like donut 2
like pizza 2
donut pizza 1
donut and 1
pizza and 1
在输出的第一条记录中,freq = 3
因为"I"
和"like"
一起出现了 3 次: x[1]
、x[2]
和 x[3]
。
感谢任何建议:)
最佳答案
拆分
成词,排序
正确识别对,得到所有对combn
,粘贴
对获取以空格分隔的词对,使用 table
获取频率,然后将它们放在一起。
这是一个例子:
f <- function(x) {
pr <- unlist(
lapply(
strsplit(x, ' '),
function(i) combn(sort(i), 2, paste, collapse=' ')
)
)
tbl <- table(pr)
d <- do.call(rbind.data.frame, strsplit(names(tbl), ' '))
names(d) <- c('word1', 'word2')
d$Freq <- tbl
d
}
使用您的示例数据:
> f(x)
word1 word2 Freq
1 and donut 1
2 and I 1
3 and like 1
4 and pizza 1
5 donut I 2
6 donut like 2
7 donut pizza 1
8 I like 3
9 I pizza 2
10 like pizza 2
关于r - 计算单词组合频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575941/