microsoftml.featurize_text: Převádí textové sloupce na číselné prvky

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

Textové transformace, které lze provést na datech před trénováním modelu.

Podrobnosti

Transformace featurize_text vytváří pytel počtů posloupností po sobě jdoucích slov, nazývaných n-gramy, z daného textového korpusu. Existují dva způsoby, jak to může udělat:

  • vytvořit slovník n-gramů a použít ID ve slovníku jako index v sáčku;

  • Hashujte každý n-gram a použijte hashovací hodnotu jako index v sáčku.

Účelem hashování je převést textové dokumenty s proměnnou délkou na číselné vektory znaků stejné délky, podpořit snížení dimenzionality a urychlit vyhledávání vah rysů.

Textová transformace se aplikuje na textové vstupní sloupce. Nabízí detekci jazyka, tokenizaci, odstraňování stopwordů, normalizaci textu a generování rysů. Ve výchozím nastavení podporuje následující jazyky: angličtinu, francouzštinu, němčinu, nizozemštinu, italštinu, španělštinu a japonštinu.

N-gramy jsou reprezentovány jako vektorové počty, přičemž vektorové sloty odpovídají buď n-gramům (vytvořeným pomocí n_gram), nebo jejich hashům (vytvořeným pomocí n_gram_hash). Vnoření ngramů do vektorového prostoru umožňuje efektivní porovnání jejich obsahu. Hodnoty slotů ve vektoru lze vážit následujícími faktory:

  • Frekvence termínu - Počet výskytů slotu v textu

  • inverzní frekvence dokumentů – poměr (logaritmus inverzní relativní frekvence slotů), který měří informace, které slot poskytuje, tím, že určuje, jak běžný nebo vzácný je v celém textu.

  • Frekvence inverzní frekvence dokumentu – produktový termín frekvence a inverzní frekvence dokumentu.

Arguments

Cols

Řetězec znaků nebo seznam názvů proměnných k transformaci. Pokud dict, klíče představují názvy nových proměnných, které mají být vytvořeny.

jazyk

Specifikuje jazyk použitý v datové sadě. Podporovány jsou následující hodnoty:

  • "AutoDetect": pro automatickou detekci jazyka.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

Specifikuje odstraňovač stop slov, který má použít. Podporují se tři možnosti:

  • Žádné: Nepoužívá se žádný odstraňovač stop slov.

  • predefined: Používá se předkompilovaný jazykově specifický seznam stop slov, který zahrnuje nejběžnější slova z systém Microsoft Office.

  • custom: uživatelem definovaný seznam stopwordů. Přijímá následující možnost: stopword.

Výchozí hodnota je None.

malá a velká písmena

Textové obaly podle pravidel invariantní kultury. Nabývá následujících hodnot:

  • "Lower"

  • "Upper"

  • "None"

Výchozí hodnota je "Lower".

keep_diacritics

False odstranění diakritických značek; True aby si zachovali diakritické znaménka. Výchozí hodnota je False.

keep_punctuations

False odstranění interpunkce; True aby si zachovala interpunkci. Výchozí hodnota je True.

keep_numbers

False pro odstranění čísel; True aby si udržel čísla. Výchozí hodnota je True.

dictionary

Slovník povolených termínů, který přijímá následující možnosti:

  • term: Volitelný vektor znaků termínů nebo kategorií.

  • dropUnknowns: Položte předměty.

  • sort: Specifikuje, jak uspořádat položky při vektorování. Podporují se dvě uspořádání:

    • "occurrence": předměty se objevují v pořadí, v jakém se vyskytuje.
    • "value": položky jsou tříděny podle jejich výchozího srovnání. Například třídění textu bude citlivé na velká písmena (např. 'A', pak 'Z' a pak 'a').

Výchozí hodnota je None. Všimněte si, že seznam slovníkových slov má přednost před slovníkovým seznamem povolených slov, protože zastavovací slova jsou odstraněna dříve, než jsou slovníkové termíny povoleny.

word_feature_extractor

Specifikuje slovo argumenty extrakce příznaků. Existují dva různé mechanismy extrakce příznaků:

  • n_gram(): Extrakce znaků založená na počtu (ekvivalent WordBagu). Přijímá následující možnosti: max_num_terms a weighting.

  • n_gram_hash(): extrakce rysů založená na hashování (ekvivalent WordHashBag). Přijímá následující možnosti: hash_bits, seed, ordered a invert_hash.

Výchozí hodnota je n_gram.

char_feature_extractor

Specifikuje argumenty pro extrakci znaků znaků. Existují dva různé mechanismy extrakce příznaků:

  • n_gram(): Extrakce znaků založená na počtu (ekvivalent WordBagu). Přijímá následující možnosti: max_num_terms a weighting.

  • n_gram_hash(): extrakce rysů založená na hashování (ekvivalent WordHashBag). Přijímá následující možnosti: hash_bits, seed, ordered a invert_hash.

Výchozí hodnota je None.

vector_normalizer

Normalizujte vektory (řádky) jednotlivě jejich přeškálováním na jednotkovou normu. Nabývá jedné z následujících hodnot:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Výchozí hodnota je "L2".

kargs

Další argumenty odeslané do výpočetního modulu

Returns

Objekt definující transformaci.

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

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

N-gramové extraktory

Odstraňovače stop slov