Wenn Text Mining mit R, nach der erneuten Verarbeitung von Textdaten, müssen wir eine Dokument-Term-Matrix für die weitere Erforschung erstellen. Aber in ähnlicher Weise wie Chinesisch, Englisch auch einige bestimmte Phasen, wie "semantische Distanz", "maschinelles Lernen", wenn Sie sie in Wort segmentieren, haben sie völlig unterschiedliche Bedeutungen, ich möchte wissen, wie vordefinierte Wörterbücher zu entsprechen Werte bestehen aus durch Leerzeichen getrennten Termen, wie zB "semantische Distanz", "maschinelles Lernen". Wenn ein Dokument "Wir könnten maschinelles Lernen verwenden, um die semantische Wortdistanz zu berechnen", wird bei Anwendung dieses Dokuments auf das Wörterbuch ["semantische Distanz", "maschinelles Lernen"] eine 1x2-Matrix zurückgegeben: [semantische Distanz, 1 ; maschinelles Lernen, 1]R Konstrukt Dokument Termmatrix, wie Wörterbücher, deren Werte bestehen aus Leerraum getrennte Phrasen
Antwort
Es ist möglich, dies mit Quanteda zu tun, obwohl es die Konstruktion eines Wörterbuchs für jede Phrase erfordert und dann den Text vorverarbeitet, um die Phrasen in Token umzuwandeln. Um ein "Token" zu werden, müssen die Phrasen durch etwas anderes als Leerzeichen ergänzt werden - hier das Zeichen "_
".
Hier sind einige Beispieltexte, einschließlich der Phrase im OP. Ich habe zwei zusätzliche Texte für die Illustration hinzugefügt - unten erzeugt die erste Zeile der Dokument-Feature-Matrix die gewünschte Antwort.
txt <- c("We could use machine learning method to calculate the words semantic distance.",
"Machine learning is the best sort of learning.",
"The distance between semantic distance and machine learning is machine driven.")
Die aktuelle Signatur für Satz erfordert das phrases
Argument Token-Objekt ein Wörterbuch oder ein Collocationen zu sein. Hier werden wir es ein Wörterbuch machen:
mydict <- dictionary(list(machine_learning = "machine learning",
semantic_distance = "semantic distance"))
Dann wir Vorprozess den Text, um die Wörterbuch-Sätze, um ihre Schlüssel zu konvertieren:
toks <- tokens(txt) %>%
tokens_compound(mydict)
toks
# tokens from 3 documents.
# text1 :
# [1] "We" "could" "use" "machine_learning"
# [5] "method" "to" "calculate" "the"
# [9] "words" "semantic_distance" "."
#
# text2 :
# [1] "Machine_learning" "is" "the" "best"
# [5] "sort" "of" "learning" "."
#
# text3 :
# [1] "The" "distance" "between" "semantic_distance"
# [5] "and" "machine_learning" "is" "machine"
# [9] "driven" "."
Schließlich können wir das Dokument-Feature-Matrix aufzubauen, zu halten alle Phrasen des Standard „glob“ Mustererkennung für jede Funktion, die den Unterstrich enthält mit:
mydfm <- dfm(toks, select = "*_*")
mydfm
## Document-feature matrix of: 3 documents, 2 features.
## 3 x 2 sparse Matrix of class "dfm"
## features
## docs machine_learning semantic_distance
## text1 1 1
## text2 1 0
## text3 1 1
(Antwort aktualisiert> = v0.9.9)
es funktioniert, danke –
Aber wenn das Wörterbuch einen Schlüssel mit regexp Muster haben, funktioniert das 'phrasetotoken' nicht –
Das ist richtig, leider. Aber es wird funktionieren, wenn ich Unterstützung für Mehrwortwörterbuchwerte hinzufüge. –