r - R tibble 字符串的所有共同词 - coocurences - bigram - dplyr
问题描述
我有一个这种格式的数据框:
df <- data.frame(names= c('perform data cleansing','information categorisation', ''))
names
1 perform data cleansing
2 information categorisation
3 write batch record documentation
我想用所有的共同点来获得这个:
names tokens1 tokens2
1 perform data cleansing perform data
1 perform data cleansing data cleansing
1 perform data cleansing cleansing perform
2 information categorisation information categorisation
3 write batch record documentation write batch
3 write batch record documentation write record
3 write batch record documentation write documentation
3 write batch record documentation batch record
3 write batch record documentation batch documentation
3 write batch record documentation record documentation
因此,对于n
字符串中的单词,您将拥有n x (n-1) / 2
coocurencies。
解决方案
我们可以用空格分割“名字”,遍历list
分割的元素,得到一次选择两个单词的unnest
组合list
library(tidyverse)
df %>%
mutate(tokens = strsplit(names, " ") %>%
map(~ .x %>%
combn(m = 2, simplify = FALSE))) %>%
unnest
如果我们需要两个单独的“tokens”列,我们paste
将combn
单词组合在一起,然后unnest
将separate
“tokens”分成两列,方法是在用于paste
组合在一起的分隔符处拆分
df %>%
mutate(tokens = strsplit(names, " ") %>%
map(~ .x %>%
combn(m = 2, FUN = function(x)
paste(x[1], x[2], sep="-"), simplify = FALSE))) %>%
unnest %>%
unnest %>%
separate(tokens, into = c('tokens1', 'tokens2'))
# names tokens1 tokens2
#1 perform data cleansing perform data
#2 perform data cleansing perform cleansing
#3 perform data cleansing data cleansing
#4 information categorisation information categorisation
#5 write batch record documentation write batch
#6 write batch record documentation write record
#7 write batch record documentation write documentation
#8 write batch record documentation batch record
#9 write batch record documentation batch documentation
#10 write batch record documentation record documentation
数据
df <- structure(list(names = c("perform data cleansing",
"information categorisation",
"write batch record documentation")), class = "data.frame",
row.names = c("1", "2", "3"))
推荐阅读
- docker - Maven 执行fabric8-maven-plug 失败
- python - 使用多个句子的问题的正则表达式
- java - MPAndroidChart 在 x 轴标签中将时间戳显示为日期格式
- plsql - PLS-00201 PL/SQL 中的流水线函数错误
- mysql - 如何解决 SpringBoot 应用程序中的 401 错误?
- php - 检查用户是否在会话中具有角色(PHP)
- visual-studio-code - 将文件保存在缓存中的VSCode /关闭后防止擦除
- web - 我想获取 Web 应用程序中使用的警报消息列表以手动测试它。如何得到它?有什么办法请提供
- flutter - 为什么我在上传颤振项目时遇到这些错误
- dart - 抛出和返回 Future.error 之间的区别