microsoftml.featurize_text: Converte le colonne di testo in caratteristiche numeriche

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)

Descrzione

Trasformazioni di testo che possono essere eseguite sui dati prima di addestrare un modello.

dettagli

La featurize_text trasformata produce un sacchetto di conteggi di sequenze di parole consecutive, chiamate n-grammi, da un dato corpus di testo. Ci sono due modi in cui può farlo:

  • costruire un dizionario di n-grammi e usare l'ID nel dizionario come indice nella borsa;

  • Hasha ogni n-gramma e usa il valore hash come indice nella bustina.

Lo scopo dell'hashing è convertire documenti di testo a lunghezza variabile in vettori numerici di caratteristiche di uguale lunghezza, per supportare la riduzione della dimensionalità e rendere più veloce la ricerca dei pesi delle caratteristiche.

La trasformazione del testo viene applicata alle colonne di input di testo. Offre rilevamento del linguaggio, tokenizzazione, rimozione delle parole chiare, normalizzazione del testo e generazione di funzionalità. Supporta di default le seguenti lingue: inglese, francese, tedesco, olandese, italiano, spagnolo e giapponese.

Gli n-grammi sono rappresentati come vettori di conteggio, con slot vettoriali corrispondenti o a n-grammi (creati usando n_gram) o ai loro hash (creati usando n_gram_hash). Incorporare ngrammi in uno spazio vettoriale permette di confrontarne i contenuti in modo efficiente. I valori delle fessure nel vettore possono essere ponderati dai seguenti fattori:

  • Frequenza del termine - Il numero di occorrenze dello slot nel testo

  • Frequenza inversa del documento - Un rapporto (il logaritmo della frequenza relativa inversa della fessura) che misura le informazioni che una fessura fornisce determinando quanto sia comune o rara su tutto il testo.

  • Termine frequenza-frequenza inversa del documento - il termine prodotto frequenza e l'inverso del documento frequenza.

Arguments

Cols

Una stringa di caratteri o una lista di nomi di variabili da trasformare. Se dict, le chiavi rappresentano i nomi delle nuove variabili da creare.

language

Specifica il linguaggio utilizzato nel set di dati. Sono supportati i valori seguenti:

  • "AutoDetect": per il rilevamento automatico del linguaggio.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

Specifica il rimuovente di parole chiuse da usare. Sono disponibili tre opzioni:

  • Nessuno: Non viene utilizzato il rimuovente delle parole chiuse.

  • predefined: Viene utilizzata una lista precompilata specifica per linguaggio di parole di stop che include le parole più comuni da Microsoft Office.

  • custom: Una lista definita dall'utente di parole stopword. Accetta la seguente opzione: stopword.

Il valore predefinito è None.

caso

Uso delle maiusculazioni di testo usando le regole della cultura invariante. Assume i seguenti valori:

  • "Lower"

  • "Upper"

  • "None"

Il valore predefinito è "Lower".

keep_diacritics

False rimuovere i segni diacritici; True per mantenere i segni diacritici. Il valore predefinito è False.

keep_punctuations

False rimuovere la punteggiatura; True per mantenere la punteggiatura. Il valore predefinito è True.

keep_numbers

False rimuovere i numeri; True per mantenere i numeri. Il valore predefinito è True.

Dizionario

Un dizionario di termini ammessi che accetta le seguenti opzioni:

  • term: Un vettore caratteri opzionale di termini o categorie.

  • dropUnknowns: Lascia cadere oggetti.

  • sort: Specifica come ordinare gli elementi quando vettorizzati. Sono supportate due ordinazioni:

    • "occurrence": gli oggetti appaiono nell'ordine in cui si incontrano.
    • "value": gli elementi sono ordinati secondo il loro confronto predefinito. Ad esempio, l'ordinamento del testo sarà sensibile alla maiuscola (ad esempio, 'A' poi 'Z' poi 'a').

Il valore predefinito è None. Si noti che la lista delle parole chiuse ha la precedenza su quella del dizionario, poiché le parole chiave vengono rimosse prima che i termini del dizionario vengano ammessi.

word_feature_extractor

Specifica la parola argomenti di estrazione delle caratteristiche. Esistono due diversi meccanismi di estrazione delle caratteristiche:

  • n_gram(): Estrazione delle caratteristiche basata sul conteggio (equivalente a WordBag). Accetta le seguenti opzioni: max_num_terms e weighting.

  • n_gram_hash(): Estrazione di caratteristiche basata su hashing (equivalente a WordHashBag). Accetta le seguenti opzioni: hash_bits, seed, ordered e invert_hash.

Il valore predefinito è n_gram.

char_feature_extractor

Specifica gli argomenti di estrazione delle caratteristiche del personaggio. Esistono due diversi meccanismi di estrazione delle caratteristiche:

  • n_gram(): Estrazione delle caratteristiche basata sul conteggio (equivalente a WordBag). Accetta le seguenti opzioni: max_num_terms e weighting.

  • n_gram_hash(): Estrazione di caratteristiche basata su hashing (equivalente a WordHashBag). Accetta le seguenti opzioni: hash_bits, seed, ordered e invert_hash.

Il valore predefinito è None.

vector_normalizer

Normalizzare i vettori (righe) singolarmente riscalandoli alla norma unitaria. Assume uno dei seguenti valori:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Il valore predefinito è "L2".

karg

Argomenti aggiuntivi inviati al motore di calcolo.

Returns

Oggetto che definisce la trasformazione.

Esempio

'''
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())

Output:

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

Estrattori N-grammi

Rimuoventi parole chiuse