stopwordsDefault: Texttransformation für maschinelles Lernen

In diesem Artikel lernen Sie Texttransformationen kennen, die für Daten durchgeführt werden können, bevor ein Modell trainiert wird.

Verwendung

  stopwordsDefault()

  stopwordsCustom(dataFile = "")

  termDictionary(terms = "", dataFile = "", sort = "occurrence")

  featurizeText(vars, language = "English", stopwordsRemover = NULL,
    case = "lower", keepDiacritics = FALSE, keepPunctuations = TRUE,
    keepNumbers = TRUE, dictionary = NULL,
    wordFeatureExtractor = ngramCount(), charFeatureExtractor = NULL,
    vectorNormalizer = "l2", ...)

Argumente

dataFile

character: <Zeichenfolge>. Datendatei mit den Termen (Kurzformdaten).

terms

Hierbei handelt es sich um einen optionalen Zeichenvektor für Termen oder Kategorien.

sort

Hiermit wird angegeben, wie Elemente beim Vektorisieren angeordnet werden sollen. Zwei Anordnungen werden unterstützt:

  • "occurrence": Elemente werden in ihrer ursprünglichen Reihenfolge angeordnet.
  • "value": Elemente werden entsprechend des Standardvergleichs angeordnet. Die Textsortierung erfolgt beispielsweise unter Berücksichtigung der Groß-/Kleinschreibung (z. B. „A“, dann „Z“, dann „a“).

vars

Eine benannte Liste von Zeichenvektoren von Eingabevariablennamen und der Name der Ausgabevariablen. Beachten Sie, dass die Eingabevariablen identischen Typs sein müssen. Für 1:1-Zuordnungen zwischen Eingabe- und Ausgabevariablen kann ein benannter Zeichenvektor verwendet werden.

language

Mit diesem Argument wird die im Dataset verwendete Sprache angegeben. Die folgenden Werte werden unterstützt:

  • "AutoDetect": Automatische Sprachenerkennung
  • "English".
  • "French".
  • "German".
  • "Dutch".
  • "Italian".
  • "Spanish".
  • "Japanese".

stopwordsRemover

Mit diesem Argument wird angegeben, wie Stoppwörter entfernt werden. Es werden drei Optionen unterstützt:

  • NULL Stoppwörter werden nicht entfernt.
  • stopwordsDefault: Eine vorkompilierte sprachspezifische Liste an Stoppwörtern wird verwendet, die die häufigsten Wörter aus Microsoft Office enthält.
  • stopwordsCustom: Hierbei handelt es sich um eine benutzerdefinierte Liste an Stoppwörtern. Sie akzeptiert die folgende Option: dataFile.
    Standardwert: NULL.

case

Bei diesem Argument geht es um die Groß-/Kleinschreibung entsprechend der Regeln der invarianten Kultur. Hierbei sind die folgenden Werte möglich:

  • "lower".
  • "upper".
  • "none".
    Standardwert: "lower".

keepDiacritics

Bei FALSE werden diakritische Zeichen entfernt, bei TRUE werden diakritische Zeichen beibehalten. Der Standardwert ist FALSE.

keepPunctuations

Bei FALSE wird Interpunktion entfernt, bei TRUE wird sie beibehalten. Standardwert: TRUE.

keepNumbers

Bei FALSE werden Zahlen entfernt, bei TRUE werden Zahlen beibehalten. Der Standardwert ist TRUE.

dictionary

Hierbei handelt es sich um ein termDictionary mit Termen auf der Positivliste. Die folgenden Optionen werden akzeptiert:

  • terms,
  • dataFile und
  • sort.
    Standardwert: NULL. Beachten Sie, dass die Stoppwörterliste Vorrang vor der Positivliste des Wörterbuchs hat, da Stoppwörter entfernt werden, bevor Begriffe des Wörterbuchs auf die Positivliste gesetzt werden.

wordFeatureExtractor

Hiermit werden die Argumente für die Featureextraktion auf Wortebene angegeben. Es gibt zwei verschiedene Methoden für die Featureextraktion:

  • ngramCount: Dies ist die anzahlbasierte Featureextraktion (entspricht WordBag). Hierbei werden die folgenden Optionen akzeptiert: maxNumTerms und weighting.
  • ngramHash: Dies ist die hashbasierte Featureextraktion (entspricht WordHashBag). Die folgenden Optionen werden akzeptiert: hashBits, seed, ordered und invertHash.
    Standardwert: ngramCount.

charFeatureExtractor

Hiermit werden die Argumente für die char-Featureextraktion angegeben. Es gibt zwei verschiedene Methoden für die Featureextraktion:

  • ngramCount: Dies ist die anzahlbasierte Featureextraktion (entspricht WordBag). Hierbei werden die folgenden Optionen akzeptiert: maxNumTerms und weighting.
  • ngramHash: Dies ist die hashbasierte Featureextraktion (entspricht WordHashBag). Die folgenden Optionen werden akzeptiert: hashBits, seed, ordered und invertHash.
    Standardwert: NULL.

vectorNormalizer

Hiermit werden die Vektoren (Zeilen) einzeln normalisiert, indem sie auf die Einheitsnorm skaliert werden. Einer der folgenden Werte ist möglich:

  • "none".
  • "l2".
  • "l1".
  • "linf". Standardwert: "l2".

...

Zusätzliche Argumente, die an die Compute-Engine gesendet werden.

Details

Die featurizeText-Transformation erzeugt einen Behälter mit der Anzahl von
Sequenzen aus aufeinander folgenden Wörtern (sogenannten N-Grammen) aus einem angegebenen Textkorpus. Dazu stehen zwei Möglichkeiten zur Verfügung:

Erstellen eines Wörterbuchs für N-Gramme und Verwenden der ID im Wörterbuch als Index im Behälter

Versehen jedes N-Gramms mit einem Hash und Verwenden des Hashwerts als Index im Behälter

Das Hashing dient der Konvertierung von Textdokumenten mit variabler Länge in numerische Featurevektoren gleicher Länge, um die Dimensionalität zu reduzieren und die Suche nach Featuregewichtungen zu beschleunigen.

Die Texttransformation wird auf Texteingabespalten angewendet. Enthält Spracherkennung, Tokenisierung, das Entfernen von Stoppwörtern, Textnormalisierung und Featuregenerierung. Standardmäßig werden die folgenden Sprachen unterstützt: Englisch, Französisch, Deutsch, Niederländisch, Italienisch, Spanisch und Japanisch.

Die N-Gramme werden als Zählvektoren dargestellt. Die Vektorslots entsprechen dabei entweder den N-Grammen (mithilfe von ngramCount erstellt) oder den dazugehörigen Hashwerten (mithilfe von ngramHash erstellt). Das Einbetten von N-Grammen in einen Vektorraum ermöglicht es, dass die Inhalte effizient miteinander verglichen werden können. Die Slotwerte im Vektor können nach den folgenden Faktoren gewichtet werden:

Begriffshäufigkeit: Hierbei handelt es sich um Anzahl des Auftretens des Slots im Text.

Inverse Häufigkeit im Dokument: Hierbei handelt es sich um ein Verhältnis (der Logarithmus der inversen relativen Slothäufigkeit), das die Informationen misst, die von einem Slot bereitgestellt werden, indem ermittelt wird, wie häufig oder selten er im gesamten Text auftaucht.

Frequenzinverse Häufigkeit des Begriffs im Dokument: Hierbei handelt es sich um die Häufigkeit von Produktbegriffen und die inverse Häufigkeit im Dokument.

Wert

Ein maml-Objekt, das die Transformation definiert.

Autor(en)

Microsoft Corporation Microsoft Technical Support

Weitere Informationen

ngramCount, ngramHash, rxFastTrees, rxFastForest, rxNeuralNet, rxOneClassSvm, rxLogisticRegression.

Beispiele


 trainReviews <- data.frame(review = c( 
         "This is great",
         "I hate it",
         "Love it",
         "Do not like it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I kind of hate it",
         "I do like it",
         "I really hate it",
         "It is very good",
         "I hate it a bunch",
         "I love it a bunch",
         "I hate it",
         "I like it very much",
         "I hate it very much.",
         "I really do love it",
         "I really do hate it",
         "Love it!",
         "Hate it!",
         "I love it",
         "I hate it",
         "I love it",
         "I hate it",
         "I love it"),
      like = c(TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
         FALSE, TRUE, FALSE, TRUE), stringsAsFactors = FALSE
     )

     testReviews <- data.frame(review = c(
         "This is great",
         "I hate it",
         "Love it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I love it",
         "I do like it",
         "I really hate it",
         "I love it"), stringsAsFactors = FALSE)


 outModel <- rxLogisticRegression(like ~ reviewTran, data = trainReviews,
     mlTransforms = list(featurizeText(vars = c(reviewTran = "review"),
     stopwordsRemover = stopwordsDefault(), keepPunctuations = FALSE)))
 # 'hate' and 'love' have non-zero weights
 summary(outModel)

 # Use the model to score
 scoreOutDF5 <- rxPredict(outModel, data = testReviews, 
     extraVarsToWrite = "review")
 scoreOutDF5