microsoftml.featurize_text: Szövegoszlopokat numerikus jellemzőkké alakít

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 és weighting.

  • n_gram_hash(): Hashing-alapú funkciókivonás (a WordHashBag-nek megfelelő). Elfogadja a következő opciókat: hash_bits, seed, ordered és invert_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 és weighting.

  • n_gram_hash(): Hashing-alapú funkciókivonás (a WordHashBag-nek megfelelő). Elfogadja a következő opciókat: hash_bits, seed, ordered és invert_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

Stopword eltávolítók