Ich verwende tm-Paket für die Textanalyse von Reparaturdaten, das Lesen von Daten in Datenrahmen, das Konvertieren in Corpus-Objekte, verschiedene Methoden zum Löschen von Daten mit low, stipWhitespace, RemoveStopwords und so weiter.
Zurückgenommen von Corpus-Objekt für stemCompletion.
Hat stemDocument mit der Funktion tm_map ausgeführt, meine Objektwörter sind stemmed
hat Ergebnisse erwartet.
Wenn ich die Funktion stemCompletion mit der Funktion tm_map ausführen möchte, funktioniert sie nicht und habe unter Fehler
Fehler in UseMethod ("Wörter"): keine anwendbare Methode für "Wörter" angewendet auf ein Objekt der Klasse "character"
Trackback () ausgeführt, um anzuzeigen und Schritte wie folgt zu erhalten
%Vor%Wie kann ich diesen Fehler beheben?
Ich habe den gleichen Fehler bei Verwendung von tm v0.6 erhalten. Ich vermute, dies tritt auf, weil stemCompletion
nicht in den Standardtransformationen für diese Version des tm-Pakets enthalten ist:
Nun hat die Funktion tolower
das gleiche Problem, kann aber mit der Funktion content_transformer
funktionsfähig gemacht werden. Ich versuchte einen ähnlichen Ansatz für stemCompletion
, war aber nicht erfolgreich.
Beachten Sie, dass stemCompletion
zwar keine Standardumwandlung ist, aber trotzdem funktioniert, wenn Sie Wortstammwörter manuell eingeben:
Damit ich mit meiner Arbeit fortfahren konnte, habe ich jedes Dokument in einem Korpus manuell durch einzelne Leerzeichen getrennt, durch stemCompletion
geführt und mit der folgenden (klobigen und nicht anmutigen!) Funktion wieder zusammengefügt:
wo dictCorpus
nur eine Kopie des gereinigten Korpus ist, aber bevor er auftaucht. Die zusätzliche stripWhitespace
ist spezifisch für mein Korpus, ist aber wahrscheinlich gut für ein allgemeines Korpus. Möglicherweise möchten Sie die Option type
nach Bedarf von "kürzest" ändern.
Um ein vollständiges Beispiel zu geben, richten wir einen Dummy-Korpus mit den crude
-Daten im tm-Paket ein:
Hinweis: Dieses Beispiel ist ungerade, da das falsch geschriebene Wort "copany" zugeordnet ist: - & gt; "copani" - & gt; "NA", in diesem Prozess. Ich bin mir nicht sicher, wie ich das korrigieren soll ...
Um den stemCompletion_mod
durch den gesamten Korpus laufen zu lassen, verwende ich einfach sapply
(oder parSapply
mit Schnee-Paket).
Vielleicht könnte jemand mit mehr Erfahrung als ich eine einfachere Änderung vorschlagen, um stemCompletion
in v0.6 des tm-Pakets zu verwenden.
Ich hatte Erfolg mit dem folgenden Workflow:
content_transformer
, um eine anonyme Funktion auf jedes Dokument des Korpus anzuwenden, stemCompletion
auf den Wörtern mit Hilfe des Wörterbuchs paste
. POC-Democode:
%Vor% PS: Die Verwendung von c
als Variablenname zum Speichern des Korpus ist aufgrund von base::c
Danke, cdxsza. Ihre Methode hat bei mir funktioniert.
%Vor%Ein Hinweis an alle, die
stemCompletion
verwenden:Die Funktion vervollständigt eine leere Zeichenfolge mit einem Wort im Wörterbuch, was unerwartet ist. Siehe unten ein Beispiel, wo der erste "Montag" für das Leerzeichen am Anfang der Zeichenfolge erzeugt wurde.
%Vor%Es kann leicht behoben werden, indem die leere Zeichenfolge
""
vorstemCompletion
wie folgt entfernt wird.
Siehe ein ausführliches Beispiel auf Seite 12 der Folien unter Ссылка
Grüße
Yanchang Zhao
RdataMining.com
Das Problem besteht darin, dass die Verwendung von tolower
(z. B. myCorpus <- tm_map(myCorpus, tolower)
) den Text in einfache Zeichenwerte umwandelt, die tm
Version 0.6 zur Verwendung mit tm_map
nicht akzeptiert.
Wenn Sie stattdessen Ihre ursprüngliche tolower
wie folgt machen
myCorpus <- tm_map(myCorpus, content_transformer(tolower))
dann haben die Daten das richtige Format, wenn Sie stemCompletion
benötigen.
Andere Funktionen wie removePunctuation
und removeNumbers
werden wie gewöhnlich mit tm_map
verwendet, d. h. ohne content_transformer
.
Referenz: Ссылка
Tags und Links tm