microsoftml.featurize_text: Wandelt Textspalten in numerische Merkmale um

Usage

microsoftml.featurize_text(cols: [str, dict, list], language: ['AutoDetect',
    'English', 'French', 'German', 'Dutch', 'Italian', 'Spanish',
    'Japanese'] = 'English', stopwords_remover=None, case: ['Lower',
    'Upper', 'None'] = 'Lower', keep_diacritics: bool = False,
    keep_punctuations: bool = True, keep_numbers: bool = True,
    dictionary: dict = None, word_feature_extractor={'Name': 'NGram',
    'Settings': {'Weighting': 'Tf', 'MaxNumTerms': [10000000],
    'NgramLength': 1, 'AllLengths': True, 'SkipLength': 0}},
    char_feature_extractor=None, vector_normalizer: ['None', 'L1', 'L2',
    'LInf'] = 'L2', **kargs)

Description

Texttransformationen, die auf Daten vor dem Training eines Modells durchgeführt werden können.

Details

Die Transformation featurize_text erzeugt einen Beutel mit Zählungen von aufeinanderfolgenden Wörterfolgen, sogenannte n-Gramm, aus einem gegebenen Textkorpus. Es gibt zwei Möglichkeiten, wie dies möglich ist:

  • ein Wörterbuch von n-Grammen erstellen und die ID im Wörterbuch als Index im Beutel verwenden;

  • Hashe jedes n-Gramm und verwende den Hashwert als Index im Beutel.

Der Zweck des Hashings ist es, Textdokumente mit variabler Länge in numerische Merkmalsvektoren gleich lang umzuwandeln, um die Dimensionsreduktion zu unterstützen und die Nachschlage von Merkmalsgewichten zu beschleunigen.

Die Texttransformation wird auf Texteingabespalten angewendet. Es bietet Spracherkennung, Tokenisierung, das Entfernen von Stoppwörtern, Textnormalisierung und Feature-Generierung. Standardmäßig unterstützt es folgende Sprachen: Englisch, Französisch, Deutsch, Niederländisch, Italienisch, Spanisch und Japanisch.

Die n-Gramm werden als Zählvektoren dargestellt, wobei Vektorslots entweder n-Gramm (erstellt mit n_gram) oder deren Hashes (erstellt mit n_gram_hash) entsprechen. Das Einbetten von Ngrammen in einen Vektorraum ermöglicht es, deren Inhalte effizient zu vergleichen. Die Schlitzwerte im Vektor können nach folgenden Faktoren gewichtet werden:

  • Begriffshäufigkeit – Die Anzahl der Vorkommen des Slots im Text

  • inverse Dokumentfrequenz – Ein Verhältnis (der Logarithmus der inversen relativen Schlitzfrequenz), das die Informationen misst, die ein Schlitz liefert, indem bestimmt wird, wie häufig oder selten sie im gesamten Text vorkommt.

  • Term Frequenz – Inverse Dokumentfrequenz – Die Produkttermfrequenz und die inverse Dokumentfrequenz.

Argumente

Cols

Eine Zeichenkette oder eine Liste von Variablennamen, die transformiert werden sollen. Wenn dict, repräsentieren die Schlüssel die Namen neuer zu erstellender Variablen.

Sprache

Spezifiziert die im Datensatz verwendete Sprache. Die folgenden Werte werden unterstützt:

  • "AutoDetect": zur automatischen Spracherkennung.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

Spezifiziert den zu verwendenden Stoppwortentferner. Es werden drei Optionen unterstützt:

  • Keine: Es wird kein Stoppwortentferner verwendet.

  • predefinedEs wird eine vorkompilierte, sprachspezifische Liste von Stoppwörtern verwendet, die die häufigsten Wörter aus Microsoft Office enthält.

  • custom: Eine benutzerdefinierte Liste von Stopwörtern. Es akzeptiert folgende Option: stopword.

Der Standardwert ist Keiner.

Gehäuse

Textgehäuse nach den Regeln der invarianten Kultur. Nimmt folgende Werte an:

  • "Lower"

  • "Upper"

  • "None"

Der Standardwert ist "Lower".

keep_diacritics

False diakritische Zeichen zu entfernen; True um diakritische Zeichen zu behalten. Der Standardwert ist False.

keep_punctuations

False um Satzzeichen zu entfernen; True um die Zeichensetzung beizubehalten. Der Standardwert ist True.

keep_numbers

False um Zahlen zu entfernen; True um Zahlen zu behalten. Der Standardwert ist True.

dictionary

Ein Wörterbuch zugelassener Begriffe, das folgende Optionen akzeptiert:

  • term: Ein optionaler Zeichenvektor von Begriffen oder Kategorien.

  • dropUnknowns: Gegenstände abwerfen.

  • sort: Spezifiziert, wie Elemente bei Vektorisierung geordnet werden. Zwei Reihenfolge werden unterstützt:

    • "occurrence": Gegenstände erscheinen in der angetroffenen Reihenfolge.
    • "value": Die Gegenstände sind nach ihrem Standardvergleich sortiert. Zum Beispiel ist Textsortierung groß- und kleinschreibungssensitiv (z. B. 'A', dann 'Z', dann 'a').

Der Standardwert ist Keiner. Beachten Sie, dass die Stopwords-Liste Vorrang vor der Dictionary-Allowlist hat, da die Stopwords entfernt werden, bevor die Wörterbuchbegriffe zugelassen werden.

word_feature_extractor

Spezifiziert die Argumente zur Feature-Extraktion. Es gibt zwei verschiedene Mechanismen zur Extraktion von Merkmalen:

  • n_gram(): Zählbasierte Feature-Extraktion (äquivalent zu WordBag). Sie akzeptiert folgende Optionen: max_num_terms und weighting.

  • n_gram_hash(): Hash-basierte Feature-Extraktion (äquivalent zu WordHashBag). Sie akzeptiert folgende Optionen: hash_bits, seed, ordered und invert_hash.

Der Standardwert ist n_gram.

char_feature_extractor

Spezifiziert die Argumente zur Extraktion der Zeichenmerkmale. Es gibt zwei verschiedene Mechanismen zur Extraktion von Merkmalen:

  • n_gram(): Zählbasierte Feature-Extraktion (äquivalent zu WordBag). Sie akzeptiert folgende Optionen: max_num_terms und weighting.

  • n_gram_hash(): Hash-basierte Feature-Extraktion (äquivalent zu WordHashBag). Sie akzeptiert folgende Optionen: hash_bits, seed, ordered und invert_hash.

Der Standardwert ist Keiner.

vector_normalizer

Normalisieren Sie Vektoren (Zeilen) einzeln, indem Sie sie auf die Einheitsnorm neu skalieren. Nimmt einen der folgenden Werte an:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Der Standardwert ist "L2".

Kargs

Zusätzliche Argumente, die an das Computemodul gesendet werden.

Rückgaben

Ein Objekt, das die Transformation definiert.

Example

'''
Example with featurize_text and rx_logistic_regression.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, featurize_text, rx_predict
from microsoftml.entrypoints._stopwordsremover_predefined import predefined


train_reviews = pandas.DataFrame(data=dict(
    review=[
        "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=[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]))
        
test_reviews = pandas.DataFrame(data=dict(
    review=[
        "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"]))

out_model = rx_logistic_regression("like ~ review_tran",
                    data=train_reviews,
                    ml_transforms=[
                        featurize_text(cols=dict(review_tran="review"),
                            stopwords_remover=predefined(),
                            keep_punctuations=False)])
                            
# Use the model to score.
score_df = rx_predict(out_model, data=test_reviews, extra_vars_to_write=["review"])
print(score_df.head())

Ausgabe:

Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Not adding a normalizer.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 25, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Warning: Too few instances to use 4 threads, decreasing to 1 thread(s)
Beginning optimization
num vars: 11
improvement criterion: Mean Improvement
L1 regularization selected 3 of 11 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.3725934
Elapsed time: 00:00:00.0131199
Beginning processing data.
Rows Read: 10, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0635453
Finished writing 10 rows.
Writing completed.
           review PredictedLabel     Score  Probability
0   This is great           True  0.443986     0.609208
1       I hate it          False -0.668449     0.338844
2         Love it           True  0.994339     0.729944
3  Really like it           True  0.443986     0.609208
4       I hate it          False -0.668449     0.338844

N-Gramm-Extraktoren

Stopwords-Entferner