2013-04-29 5 views
1

Я редактирую текст и задаюсь вопросом, могу ли я программно искать определенные слова.Найти комбинации слов, используя R

Эти слова: почти, почти, совсем, близко и очень, не работают рядом с этими словами: определенные, полные, мертвые, целые, существенные и вымершие.

Допустит, у меня есть этот символ вектор:

text <- c("R is a very essential tool for data analysis. While it is regarded as domain specific, it is a very complete programming language. Almost certainly, many people who would benefit from using R, do not use it") 

Могу ли я получить R вернуть числовой вектор, давая номера строк (или число предложения), где эти слова размещены рядом друг с другом?

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

+3

придираться понедельник: удалить последнюю запятую. :-) –

ответ

2

Использование grep для этого, после разделения текста на границах членов предложений с помощью strsplit:

stext <- strsplit(text, split="\\.")[[1]] 
grep("certain", stext) 
[1] 3 
+0

Разве не так, что вопрос был, как найти предложения, содержащие определенную комбинацию слов? Я думаю, что это немного сложнее. К сожалению, у меня нет решения. –

+0

@ DanielFischer, в этом случае он принимает некоторый grep-fu или, может быть, что-то эквивалентное 'grep 'some' | grep 'words' | grep 'combination'' –

+0

Этот код сделал это: 'combo <- list (" very essential "," very complete "," Почти наверняка ") stext <- strsplit (text, split =" \\ . ") [[1]] библиотека (plyr) laply (combo, function (x) grep (x, stext))' – luciano

2

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

library(qdap) 
stext <- c("R is a very essential tool for data analysis. While it is regarded 
    as domain specific, it is a very complete programming language. Almost 
    certainly, many people who would benefit from using R, do not use it.") 

dat <- sentSplit(data.frame(dialogue=stext), "dialogue") 
with(dat, termco(dialogue, tot, "certain")) 

## tot word.count certain 
## 1 1.1   9  0 
## 2 2.2   14  0 
## 3 3.3   14 1(7.14%) 

Обратите внимание, что пунктуация важна, и мне нужно добавить отсутствующий период в последнем предложении.

Чтобы получить вектор из которых предложения содержат «некоторые»:

which(with(dat, termco(dialogue, tot, "certain"))$raw$certain > 0) 
## [1] 3 
Смежные вопросы