Montag, Januar 27, 2020

Wörterbuch() wird nicht mehr unterstützt im tm-Paket. Wie emend code?

Mir ist nur aufgefallen, dass nach dem Update auf tm v. 0.5-10 die Funktion Dictionary() wird nicht mehr unterstützt. Ist das ein Fehler??? Oder war es veraltet? Ich nehme an, verwenden eine andere Funktion, um ein Wörterbuch zu erstellen?

Da habe ich viele code-Zeilen zu emend nun, was ist der beste Weg zu gehen, ohne engineering-alles?

  • Aus dem Paket news: „ein Zeichen-Vektor statt; Nutzungsbedingungen() zum extrahieren von Begriffen aus einer Dokument-term oder term-Dokument-matrix“ cran.r-project.org/web/packages/tm/news.html
  • Begriffe (auch) nicht genau replizieren Wörterbuch() Error in UseMethod("Terms") : no applicable method for 'Terms' applied to an object of class "character"
InformationsquelleAutor CptNemo | 2014-02-14

3 Kommentare

  1. 9

    Als IShouldBuyABoat sagt, Sie haben nicht uns keine Ahnung, wie du mit Dictionary so können wir nicht wirklich geben Ihnen keine bestimmten Antworten (tun, aktualisieren Sie Ihre Frage mit mehr details).

    In jedem Fall, die Antwort auf Ihre Frage: „wie aktualisiere ich meine code‘ ist wahrscheinlich ’nur löschen Dictionary und es sollte in Ordnung sein‘, wie man hier sehen kann:

    library(tm)
    data(crude)

    Finden Sie heraus, was Dictionary hat in früheren Versionen der tm Paket:

    methods(Dictionary)
    getAnywhere(Dictionary.DocumentTermMatrix)
    # function(x) structure(Terms(x), class = c("Dictionary", "character"))
    getAnywhere(Dictionary.character)
    # function (x)  structure(x, class = c("Dictionary", "character"))

    Irgendwie eine sinnlose Funktion sowieso, scheint durchaus sinnvoll, um es zu entfernen. Aber wie den code zu aktualisieren, die davon abhängen?

    Möglicherweise haben Sie Dictionary wie diese:

    myDictionary <- Dictionary(c("some", "tokens", "that", "I", "am", "interested", "in"))
    inspect(DocumentTermMatrix(crude, list(dictionary = myDictionary)))

    Nun, dass diese Funktion nicht mehr zur Verfügung, würden Sie dies tun, stattdessen mit einem Zeichen-Vektor: ‚

    myTerms <- c("some", "tokens", "that", "I", "am", "interested", "in")
    inspect(DocumentTermMatrix(crude, list(dictionary = myTerms)))

    Den Ausgang für diese beiden Beispiele ist identisch, das erste war mit tm version 0.5-9 und die zweite mit version 0.5-10

    Den Anweisungen in den NACHRICHTEN zu verwenden Terms ist, wenn Sie wollen, um alle Wörter in einem Dokument-term-matrix, wie so

    Terms(DocumentTermMatrix(crude))

    Wenn nichts davon hilft, dann müssen Sie liefern mehr Details über das, was Sie zu tun versuchen.

  2. 2

    Wenn Sie mit Wörterbuch, wie @Ben vorgeschlagen, ich denke, Sie könnte eine dummy-Funktion, die aufgerufen wird Dictionary die gerade die Charakter-Vektor übergeben.

    Dictionary <- function(x) {
        if( is.character(x) ) {
            return (x)
        }
        stop('x is not a character vector')
    }

    Jedoch langfristige, ist es wahrscheinlich besser, die ärmel hochkrempeln und Umgestaltung des Codes.

  3. 1

    Einen vollständigeren Auszug aus der NEWS-Datei:

    \subsection{DEPRECATED & DEFUNCT}{
        \itemize{
          \item Following functions have been removed:
          \itemize{
            \item \code{Dictionary()} (use a character vector instead; use
              \code{Terms()} to extract terms from a document-term or term-document 
              matrix),

    So. ja, es ist veraltet und wird entfernt. Und wie Ben vorgeschlagen, die Autoren beabsichtigen, Sie zu verwenden Terms(). Warum erhalten Sie die Fehlermeldung ist nur eine Angelegenheit für müßige Spekulation, da haben Sie nicht ein Daten-Objekt und der code der den Fehler auslöst. Eine Vermutung ist, dass das Objekt, die Sie bereitstellen, ist nicht ein TDM-oder DTM.

Kostenlose Online-Tests