microsoftml.featurize_text: Mengubah kolom teks menjadi fitur numerik

Penggunaan

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.

Detail

Transformasi menghasilkan featurize_text sekantong hitungan urutan kata-kata berturut-turut, yang disebut n-gram, dari korpus teks tertentu. Ada dua cara untuk melakukan ini:

  • membangun kamus n-gram dan menggunakan ID dalam kamus sebagai indeks di tas;

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

Tujuan hashing adalah untuk mengonversi dokumen teks panjang variabel menjadi vektor fitur numerik yang sama, untuk mendukung pengurangan dimensi dan untuk membuat pencarian bobot fitur lebih cepat.

Transformasi teks diterapkan ke kolom input teks. Ini menawarkan deteksi bahasa, tokenisasi, stopwords menghapus, normalisasi teks, dan pembuatan fitur. Ini mendukung bahasa berikut secara default: Inggris, Prancis, Jerman, Belanda, Italia, Spanyol dan Jepang.

N-gram direpresentasikan sebagai vektor hitungan, dengan slot vektor yang sesuai baik untuk n-gram (dibuat menggunakan n_gram) atau hashnya (dibuat menggunakan n_gram_hash). Menyematkan ngram dalam ruang vektor memungkinkan kontennya dibandingkan dengan cara yang efisien. Nilai slot dalam vektor dapat ditimbang dengan faktor-faktor berikut:

  • frekuensi istilah - Jumlah kemunculan slot dalam teks

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

  • frekuensi istilah-frekuensi terbalik dokumen - frekuensi istilah produk dan frekuensi dokumen terbalik.

Argumen

Cols

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

bahasa

Menentukan bahasa yang digunakan dalam himpunan 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 ada stopwords remover yang digunakan.

  • predefined: Daftar kata berhenti khusus bahasa yang telah dikommpilasikan sebelumnya digunakan yang menyertakan kata-kata yang paling umum dari Microsoft Office.

  • custom: Daftar stopword yang ditentukan pengguna. Ini menerima opsi berikut: stopword.

Nilai defaultnya adalah Tidak Ada.

case

Casing teks menggunakan aturan budaya invarian. Mengambil 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 untuk menghapus tanda baca; True untuk mempertahankan tanda baca. Nilai defaultnya adalah True.

keep_numbers

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

dictionary

Kamus istilah yang diizinkan yang menerima opsi berikut:

  • term: Vektor karakter opsional dari istilah atau kategori.

  • dropUnknowns: Hilangkan item.

  • sort: Menentukan cara memesan item saat di-vektorisasi. Dua pesanan didukung:

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

Nilai defaultnya adalah Tidak Ada. Perhatikan bahwa daftar stopword lebih diutamakan daripada daftar yang diizinkan kamus karena kata henti dihapus sebelum istilah kamus diizinkan.

word_feature_extractor

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

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

  • n_gram_hash(): Ekstraksi fitur berbasis hashing (setara dengan WordHashBag). Ini menerima opsi berikut: hash_bits, , seedordered 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). Ini menerima opsi berikut: max_num_terms dan weighting.

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

Nilai defaultnya adalah Tidak Ada.

vector_normalizer

Menormalkan vektor (baris) satu per satu dengan menskalakan ulang ke norma unit. Mengambil salah satu nilai berikut:

  • "None"

  • "L2"

  • "L1"

  • "LInf"

Nilai defaultnya adalah "L2".

karg

Argumen tambahan dikirim ke mesin komputasi.

Mengembalikan

Objek yang menentukan transformasi.

Lihat juga

n_gram, n_gram_hash, n_gram, n_gram_hash, get_sentiment.

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

Penghilang stopwords