我做了以下功能,以便仅输出包含“关键字”中所有单词的句子:
ricerca <- function(sentences,keywords){
for(i in 1:length(keywords)){
sentences <- lapply(sentences, function(x) grep(keywords[i], x, value = TRUE))
sentences <-unlist(sentences[lengths(sentences) > 0])
return (sentences)
}
}
我使用unlist是因为输入的句子在get_sentences(sentimentr)列表中。
以下是其中的一部分:
> frasi_negative[4:5]
[[1]]
[1] "Per la musica non è male ma per le telefonate è completamente unutile."
[2] "L'altro interlocutore non mi sente."
[3] "Quindi mi costringe a disabilitare il bluetooth per rispondere."
[4] "Il problema ulteriore è che dopo pochi secondi il bluetooth si ricollega automaticamente alle cuffie."
[5] "Quindi bisogna disabilitarlo nuovamente e cosi via."
[6] "Da impazzire ..."
[7] "Altro problema è che a volte riponendo le cuffiette nella custodia non si spegnevano."
[8] "Insomma prodotto molto economico e scarsamente funzionale."
[9] "Lo sconsiglio."
[[2]]
[1] "L'auricolare sinistro non si è mai connesso all'altro."
[2] "Provando a seguire le istruzioni oppure le dritte trovate in risposta alle domande qui su amazon non ho risolto, inoltre il lampeggiare delle lucine non corrispondeva mai a quello che era indicato."
[3] "Le ho rimandate indietro."
[4] "Peccato perchè il suono della destra era ottimo e il prodotto molto carino"
当我尝试使用函数时
ricerca(frasi_negative, c("audio","pessimo"))
输出显示仅包含一个关键字的句子。
> ricerca(frasi_negative, c("audio","pessimo"))
[1] "Audio basso, bassi praticamente inesistenti se non aumentandoli a dismisura dal audio manager del telefono."
[2] "Correndo, a seconda della posizione del telefono, l'audio scompare brevemente."
您能告诉我为什么会发生这种情况,以及如何解决此问题吗?
非常感谢。
更新:
> dput(frasi_negative[4:5])
list(c("Per la musica non è male ma per le telefonate è completamente unutile.",
"L'altro interlocutore non mi sente.", "Quindi mi costringe a disabilitare il bluetooth per rispondere.",
"Il problema ulteriore è che dopo pochi secondi il bluetooth si ricollega automaticamente alle cuffie.",
"Quindi bisogna disabilitarlo nuovamente e cosi via.", "Da impazzire ...",
"Altro problema è che a volte riponendo le cuffiette nella custodia non si spegnevano.",
"Insomma prodotto molto economico e scarsamente funzionale.",
"Lo sconsiglio."), c("L'auricolare sinistro non si è mai connesso all'altro.",
"Provando a seguire le istruzioni oppure le dritte trovate in risposta alle domande qui su amazon non ho risolto, inoltre il lampeggiare delle lucine non corrispondeva mai a quello che era indicato.",
"Le ho rimandate indietro.", "Peccato perchè il suono della destra era ottimo e il prodotto molto carino"
))
答案 0 :(得分:2)
您几乎只能用1行Base-R代码实现这一目标
sentences <- unlist(frasi_negative)[lengths(frasi_negative) > 0]
sentences[which(apply(sapply(keywords,grepl,sentences),1,all))]
带有keywords <- c("il","della")
的示例
outpu [1] "Peccato perchè il suono della destra era ottimo e il prodotto molto carino"
编辑:不需要which
函数,我们可以简化为:
sentences[apply(sapply(keywords,grepl,sentences),1,all)]
数据:
a <- c("Per la musica non è male ma per le telefonate è completamente unutile.","L'altro interlocutore non mi sente.","Quindi mi costringe a disabilitare il bluetooth per rispondere.","Il problema ulteriore è che dopo pochi secondi il bluetooth si ricollega automaticamente alle cuffie.","Quindi bisogna disabilitarlo nuovamente e cosi via.","Da impazzire ...","Altro problema è che a volte riponendo le cuffiette nella custodia non si spegnevano.","Insomma prodotto molto economico e scarsamente funzionale.","Lo sconsiglio.")
b<- c("L'auricolare sinistro non si è mai connesso all'altro.","Provando a seguire le istruzioni oppure le dritte trovate in risposta alle domande qui su amazon non ho risolto, inoltre il lampeggiare delle lucine non corrispondeva mai a quello che era indicato.","Le ho rimandate indietro.","Peccato perchè il suono della destra era ottimo e il prodotto molto carino")
frasi_negative <- list(a,b)
答案 1 :(得分:0)
Base R解决方案:
# Function; ricera => function
ricera <- function(sentences, keywords){
keywords <- unique(keywords)
matches <- lapply(sentences, function(w){
matched <- lapply(keywords, function(x){grep(x, w, value = TRUE)})
Reduce(function(y, z){intersect(y, z)}, matched)
}
)
Filter(Negate(is.null), unlist(matches))
}
# Application: charater vector => stdout console
ricera(text_list, c("problema", "non"))
数据:
text_list <- list(c("Per la musica non è male ma per le telefonate è completamente unutile.",
"L'altro interlocutore non mi sente.",
"Quindi mi costringe a disabilitare il bluetooth per rispondere.",
"Il problema ulteriore è che dopo pochi secondi il bluetooth si ricollega automaticamente alle cuffie.",
"Quindi bisogna disabilitarlo nuovamente e cosi via.",
"Da impazzire ...",
"Altro problema è che a volte riponendo le cuffiette nella custodia non si spegnevano.",
"Insomma prodotto molto economico e scarsamente funzionale.",
"Lo sconsiglio."),
c("L'auricolare sinistro non si è mai connesso all'altro.",
"Provando a seguire le istruzioni oppure le dritte trovate in risposta alle domande qui su amazon non ho risolto, inoltre il lampeggiare delle lucine non corrispondeva mai a quello che era indicato.",
"Le ho rimandate indietro.",
"Peccato perchè il suono della destra era ottimo e il prodotto molto carino"))