Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Texttransformer som kan utföras på data innan en modell tränar.
Detaljer
Transformen featurize_text producerar en påse med räkningar av sekvenser av på varandra följande ord, kallade n-gram, från ett givet textkorpus.
Det finns två sätt att göra detta på:
bygga en ordbok över n-gram och använda ID:t i ordboken som index i påsen;
Hasha varje n-gram och använd hashvärdet som index i påsen.
Syftet med hashning är att omvandla textdokument med variabel längd till numeriska funktionsvektorer av lika lång längd, för att stödja dimensionsreduktion och för att snabba uppslagningen av funktionsvikter.
Texttransformen tillämpas på textinmatningskolumner. Den erbjuder språkdetektering, tokenisering, borttagning av stoppord, textnormalisering och funktionsgenerering. Den stöder följande språk som standard: engelska, franska, tyska, nederländska, italienska, spanska och japanska.
N-grammen representeras som räknevektorer, med vektorplatser som motsvarar antingen n-gram (skapade med n_gram) eller deras hashar (skapade med n_gram_hash). Att bädda in ngram i ett vektorrum gör det möjligt att jämföra deras innehåll på ett effektivt sätt.
Slotvärdena i vektorn kan viktas med följande faktorer:
termfrekvens – Antalet förekomster av springan i texten
invers dokumentfrekvens – Ett förhållande (logaritmen av invers relativ slotfrekvens) som mäter informationen en slot ger genom att avgöra hur vanlig eller sällsynt den är över hela texten.
Term Frekvens – Invers dokumentfrekvens – Produkttermen Frekvens och den inversa dokumentfrekvensen.
Arguments
kolumner
En teckensträng eller lista med variabelnamn att transformera. Om dict, representerar nycklarna namnen på nya variabler som ska skapas.
language
Specificerar språket som används i datamängden. Följande värden stöds:
"AutoDetect": för automatisk språkigenkänning."English""French""German""Dutch""Italian""Spanish""Japanese"
stopwords_remover
Specificerar vilken stoppordsborttagare som ska användas. Det finns tre stödda alternativ:
Inga: Ingen stoppordsborttagare används.
predefined: En förkompilerad språkspecifik lista med stoppord används som inkluderar de vanligaste orden från Microsoft Office.custom: En användardefinierad lista med stoppord. Den accepterar följande alternativ:stopword.
Standardvärdet är Ingen.
fall
Textfas med reglerna för den oföränderliga kulturen. Tar följande värden:
"Lower""Upper""None"
Standardvärdet är "Lower".
keep_diacritics
False att ta bort diakritiska tecken; True för att behålla diakritiska tecken. Standardvärdet är False.
keep_punctuations
False att ta bort interpunktion; True för att behålla interpunktionen. Standardvärdet är True.
keep_numbers
False att ta bort siffror; True för att behålla siffror. Standardvärdet är True.
dictionary
En ordbok med tillåtna termer som accepterar följande alternativ:
term: En valfri teckenvektor av termer eller kategorier.dropUnknowns: Släpp föremål.sort: Specificerar hur objekt ska ordnas vid vektorisering. Två ordningar stöds:-
"occurrence": föremål dyker upp i den ordning de stöter på. -
"value": Föremålen sorteras enligt deras standardjämförelse. Till exempel kommer textsortering att vara kasuskänslig (t.ex. 'A' sedan 'Z' och sedan 'a').
-
Standardvärdet är Ingen. Observera att stoppordslistan går före ordbokslistan eftersom stopporden tas bort innan ordbokstermerna tillåtslistas.
word_feature_extractor
Specificerar ordet argument för funktionsextraktion. Det finns två olika mekanismer för funktionsutvinning:
n_gram(): Räkningsbaserad funktionsextraktion (motsvarande WordBag). Den accepterar följande alternativ:max_num_termsochweighting.n_gram_hash(): Hash-baserad funktionsextraktion (motsvarande WordHashBag). Den accepterar följande alternativ:hash_bits,seed,orderedochinvert_hash.
Standardvärdet är n_gram.
char_feature_extractor
Specificerar argumenten för extraktion av char-funktioner. Det finns två olika mekanismer för funktionsutvinning:
n_gram(): Räkningsbaserad funktionsextraktion (motsvarande WordBag). Den accepterar följande alternativ:max_num_termsochweighting.n_gram_hash(): Hash-baserad funktionsextraktion (motsvarande WordHashBag). Den accepterar följande alternativ:hash_bits,seed,orderedochinvert_hash.
Standardvärdet är Ingen.
vector_normalizer
Normalisera vektorer (rader) individuellt genom att skala om dem till enhetsnorm. Tar ett av följande värden:
"None""L2""L1""LInf"
Standardvärdet är "L2".
kargs
Ytterligare argument som skickas till beräkningsmotorn.
Retur
Ett objekt som definierar transformeringen.
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())
Resultat:
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-grams extraktorer
microsoftml.n_gram: Konverterar text till funktioner med n-gram
microsoftml.n_gram_hash: Konverterar text till funktioner med hashade n-gram