【发布时间】:2019-11-22 11:12:25
【问题描述】:
我有一个包含一些文本的列表。所以列表的每个元素都是一个文本。文本是单词的向量。所以我有一个向量列表。
我正在对此进行一些文本挖掘。
现在,我正在尝试提取单词“no”之后的单词。我转换了我的向量,所以现在它们是两个词的向量。如 :
list(c("want friend", "friend funny", "funny nice", "nice glad", "glad become", "become no", "no more", "more guys"), c("no comfort", "comfort written", "written conduct","conduct prevent", "prevent manners", "matters no", "no one", "one want", "want be", "be fired"))
我的目标是有一个向量列表,如下所示:
list(c("more"), c("comfort", "one"))
因此,我可以通过 liste[i] 看到文本 i 的结果。
所以我有一个公式来提取“no”之后的单词(在第一个向量中它将是“more”)。 但是当我的文字中有几个“不”时,它就不起作用了。
这是我的代码:
liste_negation <- vector(length = length(data))
for (i in 1:length(data)){
for (j in 1:length(data[[i]])){
if (startsWith((data[[i]])[[j]], 'no') == TRUE){
liste_neg[i] <- c(liste_neg[i], tail(strsplit((data[[i]])[[j]],split=" ")[[1]],1))
} else{
liste_neg[i] <- c(liste_neg[i])
}
liste_negation[[i]] <- c(liste_neg[[i]])
}
}
当只有一个“否”时,它适用于向量:
data <- list(c("want friend", "friend funny", "funny nice", "nice glad", "glad become", "become no", "no more", "more guys"), c("no comfort", "comfort written", "written conduct","conduct prevent", "prevent manners", "matters no", "no one", "one want", "want be", "be fired"))
data
liste_neg <- c()
liste_negation <- vector(length = length(data))
if (startsWith((data[[1]])[[9]], 'no') == TRUE){
liste_neg[1] <- c(liste_neg[1], tail(strsplit((data[[1]])[[9]],split=" ")[[1]],1))
}
liste_negation[[1]] <- c(liste_neg[[1]])
但是如果我尝试用一个循环来调整它以查看向量的每个元素,并且文本中有多个“否”,它就不起作用了。
代码:
liste_neg <- c()
liste_negation <- vector(length = length(data))
for (j in 1:length(data[[2]])){
if (startsWith((data[[2]])[[j]], 'no') == TRUE){
liste_neg[2] <- append(liste_neg[2], tail(strsplit((data[[2]])[[j]],split=" ")[[1]],1))
}
}
liste_neg
liste_negation[[2]] <- c(liste_neg[[2]])
liste_negation
警告信息:
Warning message:
In liste_neg[2] <- append(liste_neg[2], tail(strsplit((data[[2]])[[j]], :
number of items to replace is not a multiple of replacement length
> liste_neg
[1] NA "comfort"
> liste_negation[[2]] <- c(liste_neg[[2]])
> liste_negation
[1] "FALSE" "comfort"
如你所见,我只有第二个字。
我尝试了很多东西,我尝试拆分代码并运行它并逐个处理它,但是在花了整个上午之后我还没有找到解决方案..
有人有什么想法可以帮助我吗?
提前谢谢你(对不起我的英语,我是法国人^^')
【问题讨论】:
标签: r list vector text-mining