Извлечение значений вокруг ключевых слов в строке символов - PullRequest
1 голос
/ 09 января 2020

Я ищу модель машинного обучения, способную обнаруживать числа, расположенные вокруг ключевых слов в длинной символьной строке:

“R version 3.5.1 (2018-07-02)--"Feather Spray"Copyright(C)2018TheRFoundationbananas12forStatisticalComputingPlatform:-darwin15.6.0(64-bit)Risfreesoftwareandcomesapples84withABSOLUTELYNOWARRANTY.Youarewelcometoredistributeitundercertainconditions.Type'liceoranges67nse()'or'licence()’fordistributiondetails."

Идея состоит в том, чтобы извлечь:

apples 84 
bananas 12
oranges 67 

Есть ли пакет R, способный выполнить эту задачу?

Заранее спасибо

1 Ответ

0 голосов
/ 09 января 2020

Я не знаю ни одного существующего пакета как такового, но вы можете так же легко создать чередование подходящих фруктовых слов, а затем выполнить поиск по регулярному выражению во входной строке для всех совпадений:

fruits <- c("apples", "bananas", "oranges")
regex <- paste0("(", paste(fruits, collapse="|"), ")\\s*\\d+")
input <- "R version 3.5.1 (2018-07-02)--\"Feather Spray\"Copyright(C)2018TheRFoundationbananas12forStatisticalComputingPlatform:-darwin15.6.0(64-bit)Risfreesoftwareandcomesapples84withABSOLUTELYNOWARRANTY.Youarewelcometoredistributeitundercertainconditions.Type'liceoranges67nse()'or'licence()’fordistributiondetails."
regmatches(input, gregexpr(regex, input))[[1]]

[1] "bananas12" "apples84"  "oranges67"

Обратите внимание, что здесь используется регулярное выражение:

(apples|bananas|oranges)\\s*\\d+

Это соответствует одному из терминов фрукта, за которым следует дополнительный пробел и одна или несколько цифр. Вы можете добавить больше фруктов к входному вектору, чтобы расширить это регулярное выражение.

...