2016-09-11 3 views
0

У меня есть текстовый документ с миллионом слов. Теперь мне нужно знать, как найти конечные и ведущие слова слова, используя R.Как найти конечные и ведущие слова слова, используя R?

Например, если я хочу узнать слова, которые идут до и после слова «ошибка». Это может быть что угодно, как следующее с ведущими словами

"typo error" 
"manual error" 
"system error" 

и трейлинг словами, как

"error corrected" 
"error found" 
"error occurred" 

Любая идея, как сделать это? Заранее благодарю за ваши материалы.

ответ

3

Для слов представая перед ошибкой:

x <- "no error and no error and some error" # input 

library(gsubfn) 
rx <- "(\\w+) error" 
table(strapplyc(x, rx)[[1]]) 

даяние:

no some 
    2 1 

Заменить rx следующим за словами после ошибки:

rx <- "error (\\w+)" 
1

Как об этом:

test <- c("I don't want to match error this This is a random error what I want to match") 
# convert to a list 
words <- strsplit((test),' ') 
# get indexes that match 'error' 
indexes <- grep('error',words[[1]], perl=TRUE) 

# select words that come after 'error' 
words[[1]][indexes+1] 
# before 'error' 
words[[1]][indexes-1] 
2

Мое решение будет str_match_all:

library(stringr) 
txt <- "system error corrected hardcore error detected wtf error holymoly" 
str_match_all(txt, "\\s*(\\w+)\\serror\\s*(\\w+)") 

[[1]] 
    [,1]      [,2]  [,3]   
[1,] "system error corrected" "system" "corrected" 
[2,] " hardcore error detected" "hardcore" "detected" 
[3,] " wtf error holymoly"  "wtf" "holymoly"