Hallo: Ich habe ein Wörterbuch von negativen Begriffen, die von anderen vorbereitet wurde. Ich bin nicht sicher, wie sie die Stemming gemacht haben, aber es sieht so aus, als hätten sie etwas anderes als den Porter Stemer benutzt. Das Wörterbuch hat ein Platzhalterzeichen (*), von dem ich denke, dass es eine Stemming-Funktion ermöglicht. Aber ich weiß nicht, wie ich das mit grep() oder dem tm-Paket im R-Kontext nutzen kann, also habe ich es ausgezogen, in der Hoffnung, einen Weg zu finden, die partielle Übereinstimmung zu grepsen. So sieht das ursprüngliche Wörterbuch wie dieseR: teilweise Übereinstimmung Wörterbuch Begriffe mit grep und tm-Paket
#load libraries
library(tm)
#sample dictionary terms for polarize and outlaw
negative<-c('polariz*', 'outlaw*')
#strip out wildcard
negative<-gsub('*', '', negative)
#test corpus
test<-c('polarize', 'polarizing', 'polarized', 'polarizes', 'outlaw', 'outlawed', 'outlaws')
#Here is how R's porter stemmer stems the text
stemDocument(test)
Also, wenn ich meinen Corpus Stemmer mit R aufgehalten, Begriffe wie ‚outlaw‘ im Wörterbuch gefunden würden, aber es wäre nicht Begriffe wie ‚polarisiert‘ entsprechen und so, weil sie anders als im Wörterbuch gefunden werden würden.
Also, was ich möchte, ist eine Möglichkeit, das tm-Paket nur exakte Teile jedes Wortes übereinstimmen zu lassen. Ohne meine Dokumente zu stempeln, möchte ich daher in der Lage sein, "Outlaws" und "Outlaws" als "Outlaw" herauszugreifen und "Polariz" in "Polarisiert", "Polarisiert" und "Polarisiert" herauszusuchen. Ist das möglich?
#Define corpus
test.corp<-Corpus(VectorSource(test))
#make Document Term Matrix
dtm<-documentTermMatrix(test.corp, control=list(dictionary=negative))
#inspect
inspect(dtm)
Das funktioniert tatsächlich perfekt. Jetzt habe ich ein anderes Wörterbuch, obwohl es Einträge mit mehreren Wörtern gibt. – spindoctor