microsoftml.featurize_text: Przekształca kolumny tekstu w cechy numeryczne

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

Transformacje tekstowe, które można wykonać na danych przed trenowaniem modelu.

Szczegóły

Transformacja featurize_text generuje worek liczenia ciągów kolejnych słów, zwanych n-gramami, z danego korpusu tekstu. Są dwa sposoby, w jakie może to zrobić:

  • zbuduj słownik n-gramów i użyj identyfikatora ze słownika jako indeksu w torbie;

  • zhashuj każdy n-gram i użyj wartości hash jako indeksu w worku.

Celem haszowania jest konwersja dokumentów tekstowych o zmiennej długości na wektory cech numeryczne o równej długości, wspieranie redukcji wymiarowości oraz szybsze wyszukiwanie wag cech.

Transformacja tekstu jest stosowana do kolumn wejściowych tekstu. Oferuje wykrywanie języka, tokenizację, usuwanie słów stopowych, normalizację tekstu oraz generowanie cech. Domyślnie obsługuje następujące języki: angielski, francuski, niemiecki, niderlandzki, włoski, hiszpański i japoński.

N-gramy są reprezentowane jako wektory liczenia, przy czym sloty wektorowe odpowiadają albo n-gramom (utworzonym za pomocą n_gram), albo ich skrótom (utworzonym za pomocą n_gram_hash). Osadzenie ngramów w przestrzeni wektorowej pozwala na efektywne porównanie ich zawartości. Wartości slotów w wektorze można ważyć według następujących czynników:

  • częstotliwość wyrazu – liczba wystąpień slotu w tekście

  • odwrotna częstość dokumentów – stosunek (logarytm odwrotnej względnej częstotliwości slotów), który mierzy informacje dostarczane przez slot, określając, jak powszechne lub rzadkie są w całym tekście.

  • Częstotliwość odwrotna częstotliwości dokumentu – częstotliwość produktu oraz odwrotna częstotliwość dokumentu.

Arguments

Cols

Ciąg znaków lub lista nazw zmiennych do transformacji. Jeśli dict, klucze reprezentują nazwy nowych zmiennych, które mają zostać utworzone.

język

Określa język używany w zbiorze danych. Obsługiwane są następujące wartości:

  • "AutoDetect": dla automatycznego wykrywania języka.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

Określa usuwacz słów stopowych do użycia. Obsługiwane są trzy opcje:

  • Brak: Nie używa się usuwania słów stopowych.

  • predefined: Używana jest wstępnie skompilowana lista słów stopowych specyficznych dla języka, która obejmuje najczęściej używane słowa z Microsoft Office.

  • custom: Lista słów stopowych zdefiniowana przez użytkownika. Akceptuje następującą opcję: stopword.

Wartość domyślna to Brak.

przypadek

Obudowanie tekstu według reguł kultury inwariantnej. Przybiera następujące wartości:

  • "Lower"

  • "Upper"

  • "None"

Wartość domyślna to "Lower".

keep_diacritics

False usuwanie znaków diakrytycznych; True aby zachować znaki diakrytyczne. Wartość domyślna to False.

keep_punctuations

False usunięcie interpunkcji; True aby zachować interpunkcję. Wartość domyślna to True.

keep_numbers

False usuwanie liczb; True by zachować liczby. Wartość domyślna to True.

dictionary

Słownik dozwolonych terminów akceptujących następujące opcje:

  • term: Opcjonalny wektor znaków terminów lub kategorii.

  • dropUnknowns: Upuszczaj przedmioty.

  • sort: Określa, jak ustawić elementy po wektoryzacji. Wspierane są dwa kolejności:

    • "occurrence": przedmioty pojawiają się w kolejności spotkania.
    • "value": elementy są sortowane według domyślnego porównania. Na przykład sortowanie tekstu będzie zależało od wielkości liter (np. 'A', potem 'Z', a potem 'a').

Wartość domyślna to Brak. Należy zauważyć, że lista haseł stopowych ma pierwszeństwo przed listą dozwolonych słownika, ponieważ hasła są usuwane zanim terminy słownikowe zostaną dopuszczone.

word_feature_extractor

Określa słowo argumenty ekstrakcji cech. Istnieją dwa różne mechanizmy wyodrębniania cech:

  • n_gram(): Ekstrakcja cech oparta na liczbie (odpowiednik WordBag). Akceptuje następujące opcje: max_num_terms oraz weighting.

  • n_gram_hash(): Ekstrakcja cech oparta na hasze (odpowiednik WordHashBag). Akceptuje następujące opcje: hash_bits, seed, ordered oraz invert_hash.

Wartość domyślna to n_gram.

char_feature_extractor

Określa argumenty ekstrakcji cech postaci. Istnieją dwa różne mechanizmy wyodrębniania cech:

  • n_gram(): Ekstrakcja cech oparta na liczbie (odpowiednik WordBag). Akceptuje następujące opcje: max_num_terms oraz weighting.

  • n_gram_hash(): Ekstrakcja cech oparta na hasze (odpowiednik WordHashBag). Akceptuje następujące opcje: hash_bits, seed, ordered oraz invert_hash.

Wartość domyślna to Brak.

vector_normalizer

Normalizuj wektory (wiersze) indywidualnie, przeskalowując je do normy jednostkowej. Przyjmuje jedną z następujących wartości:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Wartość domyślna to "L2".

kargs

Dodatkowe argumenty wysyłane do aparatu obliczeniowego.

Zwroty

Obiekt definiujący przekształcenie.

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

Ekstraktory N-gramów

Usuwacze słów stopowych