2016-06-09 3 views
1

Я хотел бы извлечь плакаты из текста и привязать их к карте - автоматически с R. Первым шагом было бы извлечение плакатов.Как извлечь перечисленные имена (имена плагинов) из текста?

Скачан список платак (от geonames); но как я могу совместить слова из списка geonames-placename в тексте?

Возможность с intersect() работает только при преобразовании текста в вектор - и поэтому нужно разделить текст на слова, что приводит к тому, что оператор-совпадение найдет только однослотовые плакаты, такие как «берлин», но не «новый йорк» и т. д.

Существует ли функция сравнения списка с текстом (как строка)?

MWE:

list = c("Wien", "London", "New York") 
text = "Er sah den Stadtplan von Wien in New York." 
words = unlist(strsplit(text, "\\W")) 
intersect(list, words) 

приводит только:

> [1] "Wien" 

ответ

0

вы могли бы использовать что-то вроде этого

library(stringr) 
    list = c("Wien", "London", "New York") 
    text = "Er sah den Stadtplan von Wien in New York." 
    words=as.character() 

    for (i in 1:length(list)){ 

     if (is.na(str_extract(text,list[i]))) next 

     x<-str_extract(text,list[i]) 
     words<-c(words,x) 
    } 


    > words 
    [1] "Wien"  "New York" 
+0

спасибо! Фактически, ответ, которым вы мне помогли, была команда 'str_extract()'. мой главный момент заключался в получении вывода из 'unlist (str_extract_all (текст, список))' - спасибо! – dia

0

В зависимости от сложности вы можете также использовать (будьте осторожны с пробелами)

list = c("Wien", "London", "NewYork") 
text = "Er sah den Stadtplan von Wien in NewYork." 
words = unlist(strsplit(text, "\\W")) 
list[list %in% words] 

"Wien" "NewYork"

Смежные вопросы