2016-04-29 10 views
0

Angenommen, ich analysiere einen englischen Korpus mit dem tm Paket und mache die üblichen Reinigungsschritte.Wie erkennen Fremdwörter in Corpus?

library(tm) 
data("crude") 
corpus <- Corpus(crude) 

corpus <- tm_map(corpus, content_transformer(tolower)) 
corpus <- tm_map(corpus, content_transformer(removeWords)) stopwords("english")) 
corpus <- tm_map(corpus, stripWhitespace) 
corpus <- tm_map(corpus, removePunctuation) 
corpus <- tm_map(corpus, stemDocument) 
corpus <- tm_map(corpus, PlainTextDocument) 

# text matrices 
tdm <- TermDocumentMatrix(corpus) 
dtm<- DocumentTermMatrix(corpus) 

Wie identifiziere ich die Wörter in einer anderen Sprache als die des Korpus? Ein ähnliches Problem wird mit Python here konfrontiert, aber meine Forschung ergab keine interessanten Ergebnisse.

Antwort

1

Dies ist keine vollständige Lösung, aber ich denke, es könnte helfen. Kürzlich musste ich etwas ähnliches tun, wo ich Wörter aus einem Korpus mit chinesischen Schriftzeichen entfernen musste. Ich verwendete eine benutzerdefinierte Umwandlung mit einer Regex, um alles mit einem nicht a-z 0-9 Zeichen darin zu entfernen.

corpus <- tm_map(corpus, content_transformer(function(s){ 
    gsub(pattern = '[^a-zA-Z0-9\\s]+', 
     x = s, 
     replacement = " ", 
     ignore.case = TRUE, 
     perl = TRUE) 
})) 

Zum Beispiel, wenn dort ein chinesisches Wort ist, wird es entfernt.

gsub(pattern = '[^a-zA-Z0-9\\s]+', 
    x = 'English 象形字 Chinese', 
    replacement = "", 
    ignore.case = TRUE, 
    perl = TRUE) 

Ausgang: „Englisch Chinesisch“

Es ist schwieriger, wenn Sie Wörter versuchen, wie Spanisch von einer Sprache zu entfernen, da einige Buchstaben einen Akzent haben, während andere nicht tun. Zum Beispiel, das funktioniert nicht vollständig, aber vielleicht ist es ein Anfang.

gsub(pattern = '[a-zA-Z0-9]+[^a-zA-Z0-9\\s]+[a-zA-Z0-9]+', 
    x = 'El jalapeño es caliente', 
    replacement = "", 
    ignore.case = TRUE, 
    perl = TRUE) 

Ausgang: "El es caliente"

hoffe, das hilft!

Verwandte Themen