microsoftml.featurize_text: Mengonversi kolom teks menjadi fitur numerik

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)

Deskripsi

Transformasi teks yang dapat dilakukan pada data sebelum melatih model.

Rincian

Transformasi ini featurize_text menghasilkan kantong hitungan urutan kata berurutan, yang disebut n-gram, dari korpus teks tertentu. Ada dua cara yang bisa dilakukan ini:

  • membuat kamus dari n-gram dan menggunakan ID dalam kamus sebagai indeks dalam tas;

  • Hash setiap n-gram dan gunakan nilai hash sebagai indeks dalam tas.

Tujuan hashing adalah untuk mengubah dokumen teks berpanjang variabel menjadi vektor fitur numerik dengan panjang sama, mendukung pengurangan dimensi, dan mempercepat pencarian bobot fitur.

Transformasi teks diterapkan pada kolom input teks. Aplikasi ini menawarkan deteksi bahasa, tokenisasi, penghapusan kata stopword, normalisasi teks, dan pembuatan fitur. Secara default, sistem ini mendukung bahasa-bahasa berikut: Inggris, Prancis, Jerman, Belanda, Italia, Spanyol, dan Jepang.

N-gram direpresentasikan sebagai vektor hitung, dengan slot vektor yang sesuai dengan n-gram (dibuat menggunakan n_gram) atau dengan hash mereka (dibuat menggunakan n_gram_hash). Menyisipkan ngram dalam ruang vektor memungkinkan isinya dibandingkan secara efisien. Nilai slot dalam vektor dapat diberi bobot berdasarkan faktor-faktor berikut:

  • frekuensi istilah - Jumlah kemunculan slot dalam teks

  • frekuensi dokumen invers - Rasio (logaritma dari frekuensi slot relatif terbalik) yang mengukur informasi yang diberikan slot dengan menentukan seberapa umum atau langka informasi tersebut di seluruh teks.

  • Frekuensi Term-Invers Dokumen Frekuensi - Frekuensi Istilah Produk dan Frekuensi Dokumen Terbalik.

Arguments

Cols

String karakter atau daftar nama variabel yang akan ditransformasi. Jika dict, kunci tersebut mewakili nama-nama variabel baru yang akan dibuat.

bahasa

Menentukan bahasa yang digunakan dalam set data. Nilai berikut ini didukung:

  • "AutoDetect": untuk deteksi bahasa otomatis.

  • "English"

  • "French"

  • "German"

  • "Dutch"

  • "Italian"

  • "Spanish"

  • "Japanese"

stopwords_remover

Menentukan penghapus kata henti yang akan digunakan. Ada tiga opsi yang didukung:

  • Tidak ada: Tidak menggunakan penghapus kata stopword.

  • predefined: Daftar kata henti khusus bahasa yang telah dikompilasi sebelumnya digunakan yang mencakup kata-kata paling umum dari Microsoft Office.

  • custom: Daftar kata stopword yang didefinisikan pengguna. Aplikasi ini menerima opsi berikut: stopword.

Nilai defaultnya adalah Tidak Ada.

kasus

Huruf teks menggunakan aturan budaya invarian. Mengambil nilai-nilai berikut:

  • "Lower"

  • "Upper"

  • "None"

Nilai defaultnya adalah "Lower".

keep_diacritics

False untuk menghapus tanda diakritik; True untuk mempertahankan tanda diakritik. Nilai defaultnya adalah False.

keep_punctuations

False menghilangkan tanda baca; True untuk mempertahankan tanda baca. Nilai defaultnya adalah True.

keep_numbers

False untuk menghapus angka; True untuk mempertahankan jumlah. Nilai defaultnya adalah True.

dictionary

Kamus istilah yang diizinkan yang menerima opsi berikut:

  • term: Vektor karakter opsional dari istilah atau kategori.

  • dropUnknowns: Menjatuhkan item.

  • sort: Menentukan cara mengurutkan item saat divektorisasi. Dua urutan didukung:

    • "occurrence": item muncul sesuai urutan yang ditemui.
    • "value": item diurutkan sesuai dengan perbandingan defaultnya. Misalnya, pengurutan teks akan sensitif huruf besar/kecil (misalnya, 'A' lalu 'Z' lalu 'a').

Nilai defaultnya adalah Tidak Ada. Perlu dicatat bahwa daftar kata henti lebih diutamakan daripada daftar izin kamus karena kata henti dihapus sebelum istilah kamus diizinkan.

word_feature_extractor

Menentukan argumen ekstraksi fitur word. Ada dua mekanisme ekstraksi fitur yang berbeda:

  • n_gram(): Ekstraksi fitur berbasis hitungan (setara dengan WordBag). Ia menerima opsi berikut: max_num_terms dan weighting.

  • n_gram_hash(): Ekstraksi fitur berbasis hashing (setara dengan WordHashBag). Ia menerima opsi berikut: hash_bits, seed, ordered dan invert_hash.

Nilai defaultnya adalah n_gram.

char_feature_extractor

Menentukan argumen ekstraksi fitur karakter. Ada dua mekanisme ekstraksi fitur yang berbeda:

  • n_gram(): Ekstraksi fitur berbasis hitungan (setara dengan WordBag). Ia menerima opsi berikut: max_num_terms dan weighting.

  • n_gram_hash(): Ekstraksi fitur berbasis hashing (setara dengan WordHashBag). Ia menerima opsi berikut: hash_bits, seed, ordered dan invert_hash.

Nilai defaultnya adalah Tidak Ada.

vector_normalizer

Normalisasi vektor (baris) secara individual dengan mengubah skala menjadi norma satuan. Mengambil salah satu nilai berikut:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Nilai defaultnya adalah "L2".

karg

Argumen tambahan dikirim ke mesin komputasi.

Pengembalian Barang

Objek yang menentukan transformasi.

Contoh

'''
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

Ekstraktor N-gram

Penghapus kata kunci