Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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_termsaweighting.n_gram_hash(): extrakce rysů založená na hashování (ekvivalent WordHashBag). Přijímá následující možnosti:hash_bits,seed,orderedainvert_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_termsaweighting.n_gram_hash(): extrakce rysů založená na hashování (ekvivalent WordHashBag). Přijímá následující možnosti:hash_bits,seed,orderedainvert_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