使用词簇值转换字符串列
Transform column of strings with word cluster values
我正在用 R 做一些基本的 NLP 工作。我有两个数据集,想用另一个中每个词的聚类值替换一个中的词。
第一个数据集包含句子,第二个数据集包含每个单词的聚类值(假设第一个数据集中的每个单词都有一个聚类值):
original_text_df <- read.table(text="Text
'this is some text'
'this is more text'", header=T, sep="")
cluster_df <- read.table(text="Word Cluster
this 2
is 2
some 3
text 4
more 3", header=T, sep="")
这是所需的转换输出:
Text
"2 2 3 4"
"2 2 3 4"
寻找有效的解决方案,因为我的句子很长而且很多。谢谢!
您可以尝试这样的操作:
library(tidyr)
library(dplyr)
library(stringi)
df1 <- unnest(stri_split_fixed(original_text_df$Text, ' '), group) %>%
group_by(x) %>% mutate(cluster = cluster_df$Cluster[cluster_df$Word %in% x])
给出:
#Source: local data frame [8 x 3]
#Groups: x
#
# group x cluster
#1 X1 this 2
#2 X1 is 2
#3 X1 some 3
#4 X1 text 4
#5 X2 this 2
#6 X2 is 2
#7 X2 more 3
#8 X2 text 4
从那里,为了匹配您的预期输出,您可以使用 split()
为每个组(句子)构建一个聚类列表并重建数据框:
l <- split(df1$cluster, f = df1$group)
df2 <- data.frame(Text = do.call(rbind, lapply(l, paste0, collapse = " ")))
你将获得:
# Text
#X1 2 2 3 4
#X2 2 2 3 4
你可以参考这个非常相似我几个月前问过,显示了很多其他建议。
我正在用 R 做一些基本的 NLP 工作。我有两个数据集,想用另一个中每个词的聚类值替换一个中的词。
第一个数据集包含句子,第二个数据集包含每个单词的聚类值(假设第一个数据集中的每个单词都有一个聚类值):
original_text_df <- read.table(text="Text
'this is some text'
'this is more text'", header=T, sep="")
cluster_df <- read.table(text="Word Cluster
this 2
is 2
some 3
text 4
more 3", header=T, sep="")
这是所需的转换输出:
Text
"2 2 3 4"
"2 2 3 4"
寻找有效的解决方案,因为我的句子很长而且很多。谢谢!
您可以尝试这样的操作:
library(tidyr)
library(dplyr)
library(stringi)
df1 <- unnest(stri_split_fixed(original_text_df$Text, ' '), group) %>%
group_by(x) %>% mutate(cluster = cluster_df$Cluster[cluster_df$Word %in% x])
给出:
#Source: local data frame [8 x 3]
#Groups: x
#
# group x cluster
#1 X1 this 2
#2 X1 is 2
#3 X1 some 3
#4 X1 text 4
#5 X2 this 2
#6 X2 is 2
#7 X2 more 3
#8 X2 text 4
从那里,为了匹配您的预期输出,您可以使用 split()
为每个组(句子)构建一个聚类列表并重建数据框:
l <- split(df1$cluster, f = df1$group)
df2 <- data.frame(Text = do.call(rbind, lapply(l, paste0, collapse = " ")))
你将获得:
# Text
#X1 2 2 3 4
#X2 2 2 3 4
你可以参考这个非常相似