Разделить текст на основе точного соответствия из списка шаблонов, используя r - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть текст и шаблоны.

text <- "It is only a very poor quality car that can give big problems with automatic gearbox" 
patterns <- c("very poor","big problems")

Разделить текст

unlist(strsplit(text, "(\\s+)|(?!')(?=[[:punct:]])", perl = TRUE))

Вывод:

[1] "It"        "is"        "only"      "a"         "very"      "poor"      "quality"   "car"       "that"      "can"      
[11] "give"      "big"       "problems"  "with"      "automatic" "gearbox"

Мне нужно сопоставить список шаблонов впредложение вместо «очень» «плохое» становится «очень плохим», то же самое с «большими проблемами».

Пример вывода:

[1] "It"     "is"     "only"    "a"    "very poor"   "quality"   "car"  "that"   "can"      
[10] "give"   "big problems"  "with"   "automatic"   "gearbox"

Как мне это сделать?

1 Ответ

0 голосов
/ 21 февраля 2019

Это один из подходов:

library(stringr)
text <- "It is only a very poor quality car that can give big problems with automatic gearbox" 
patterns <- c("very poor","big problems")
patterns_ns <- setNames(str_replace_all(patterns, " ", "&&"), patterns)
text_ns <- str_replace_all(text, patterns_ns)
text_split <- str_replace_all(unlist(str_split(text_ns, "\\s")), "&&", " ")
text_split

Я предположил, что "&&" - это строка, которая на самом деле не отображается в исходном тексте и которую вы хотите разбить на пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...