2016-06-09 8 views
1

Ich möchte Ortsnamen aus einem Text extrahieren und sie auf einer Karte geolocatieren - automatisch mit R. Der erste Schritt wäre, die Ortsnamen zu extrahieren.Wie extrahierte Namen (Ortsnamen) aus einem Text extrahiert werden?

Ich habe eine Liste von Ortsnamen heruntergeladen (von geonames); aber wie passe ich die Wörter aus der geonames-Ortsnamenliste im Text an?

Die Möglichkeit mit intersect() funktioniert nur, wenn ich den Text in einen Vektor umwandeln - und deshalb den Text in Wörter aufteilen muss, was dazu führt, dass der Match-Operator nur Ein-Wort-Ortsnamen wie "berlin" findet nicht "New York" etc.

Gibt es eine Funktion zum Vergleichen einer Liste mit Text (als String)?

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) 

Ergebnisse in nur:

> [1] "Wien" 

Antwort

0

Sie etwas wie das

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

danke! tatsächlich, die Antwort, mit der Sie mir geholfen haben, war der Befehl 'str_extract()'. Mein Hauptpunkt war, die Ausgabe von 'unlist (str_extract_all (Text, Liste))' zu bekommen - danke! – dia

0

Je nach Komplexität verwenden können Sie auch (Vorsicht mit Leerzeichen) verwenden könnte

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"

Verwandte Themen