Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Szövegátalakítások, amelyeket adaton lehet végrehajtani egy modell betanítása előtt.
Részletek
A featurize_text transzformáció egy adott szövegkorpuszból egy zsák sorsorokat tartalmazó sorozatokat hoz létre, amelyeket n-gramoknak neveznek.
Kétféleképpen lehet ezt megvalósítani:
n-grammos szótárt építeni, és a szótárban lévő azonosítót használjuk indexként a zsákban;
Hasheljük ki minden n-gramot, és használjuk a hash értéket indexként a zsákban.
A hashing célja, hogy a változó hosszúságú szöveges dokumentumokat egyenlő hosszúságú numerikus jellemzővektorokká alakítsa, hogy támogassa a dimenziócsökkentést és gyorsabb legyen a jellemzősúlyok keresése.
A szövegtranszformációt a szövegbemeneti oszlopokra alkalmazzuk. Nyelvfelismerést, tokenizációt, stopword eltávolítását, szöveg normalizálását és jellemzők generálását kínálja. Alapértelmezés szerint a következő nyelveket támogatja: angol, francia, német, holland, olasz, spanyol és japán.
Az n-grammokat számvektorként ábrázolják, ahol a vektorhelyek vagy n-grammoknak (az -vel n_gramlétrehozva) vagy a hash-jeiknek (a használatával n_gram_hashgenerált) felelnek meg. Az ngramok vektortérbe való beágyazása lehetővé teszi tartalmuk hatékony összehasonlítását.
A vektorban lévő slot értékek a következő tényezőkkel súlyozhatók:
kifejezés gyakorisága – a rés előfordulásának száma a szövegben
inverz dokumentum frekvencia – Egy arány (az inverz relatív slot frekvencia logaritmusa), amely azt méri, hogy egy slot milyen információt ad azáltal, hogy meghatározza, mennyire gyakori vagy ritka az egész szövegben.
Frekvencia-inverz dokumentum frekvencia – a szorzat tag frekvencia, az inverz dokumentumfrekvenciá.
Arguments
cols
Egy karakterlánc vagy változónevek listája, amelyeket át kell alakítani. Ha dict, akkor a kulcsok az új változók nevét jelentik, amelyeket létre kell hozni.
nyelv
Megadja az adathalmazban használt nyelvet. A következő értékek támogatottak:
"AutoDetect": automatikus nyelvfelismeréshez."English""French""German""Dutch""Italian""Spanish""Japanese"
stopwords_remover
Megadja a stopword eltávolító használatát. Három támogatott lehetőség van:
Nincs: Nincs stopword eltávolító.
predefined: Egy előre fordított, nyelvspecifikus stop szavak listát használnak, amely tartalmazza a Microsoft Office leggyakoribb szavait.custom: Egy felhasználó által definiált stopword lista. Elfogadja a következő opciót:stopword.
Az alapértelmezett érték Nincs.
eset
Szövegvázlat az invariáns kultúra szabályai alapján. A következő értékeket veszi fel:
"Lower""Upper""None"
Az alapértelmezett érték a "Lower".
keep_diacritics
False a diakritikus jelek eltávolítására; True hogy megtartsák a diakritikus jeleket. Az alapértelmezett érték a False.
keep_punctuations
False a helyes írásjelek eltávolítására; True hogy megőrizzék a helyjeleket. Az alapértelmezett érték a True.
keep_numbers
False a számok eltávolítására; True hogy megtartsák a számokat. Az alapértelmezett érték a True.
dictionary
Egy engedélyezett kifejezések szótára, amely az alábbi opciókat fogadja:
term: Egy opcionális karaktervektor, amely kifejezéseket vagy kategóriákat tartalmaz.dropUnknowns: Dobj el tárgyakat.sort: Megadja, hogyan rendeljük az elemeket vektorizálva. Két rendelés támogatott:-
"occurrence": a tárgyak a találkozott sorrendben jelennek meg. -
"value": az elemek alapértelmezett összehasonlításuk szerint vannak rendezve. Például a szövegrendezés kis- és nagybetűs lesz (pl. 'A', majd 'Z', majd 'a').
-
Az alapértelmezett érték Nincs. Fontos megjegyezni, hogy a stopword lista elsőbbséget élvez a szótári engedélyezett listával szemben, mivel a stopwordokat eltávolítják, mielőtt a szótári kifejezések engedélyezett lennének.
word_feature_extractor
Megadja a funkciókivonási argumentumok szót. Két különböző jellemző kivonási mechanizmus létezik:
n_gram(): Számalapú jellemzők kinyerése (a WordBag-nek megfelelő). Elfogadja a következő lehetőségeket:max_num_termsésweighting.n_gram_hash(): Hashing-alapú funkciókivonás (a WordHashBag-nek megfelelő). Elfogadja a következő opciókat:hash_bits,seed,orderedésinvert_hash.
Az alapértelmezett érték a n_gram.
char_feature_extractor
Megadja a karakter tulajdonság kinyerési argumentumokat. Két különböző jellemző kivonási mechanizmus létezik:
n_gram(): Számalapú jellemzők kinyerése (a WordBag-nek megfelelő). Elfogadja a következő lehetőségeket:max_num_termsésweighting.n_gram_hash(): Hashing-alapú funkciókivonás (a WordHashBag-nek megfelelő). Elfogadja a következő opciókat:hash_bits,seed,orderedésinvert_hash.
Az alapértelmezett érték Nincs.
vector_normalizer
Normalizáljuk a vektorokat (sorokat) egyenként, egységnormára átskálva őket. Az alábbi értékek egyikét veszi fel:
"None""L2""L1""LInf"
Az alapértelmezett érték a "L2".
kargs
A számítási motornak küldött további argumentumok.
Visszatérítések
Az átalakítást meghatározó objektum.
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-grammos kihúzók
microsoftml.n_gram: A szöveget n grammos használatával funkciókká alakítja