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
danweighting
.n_gram_hash()
: Ekstraksi fitur berbasis hashing (setara dengan WordHashBag). Ini menerima opsi berikut:hash_bits
, ,seed
ordered
daninvert_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
danweighting
.n_gram_hash()
: Ekstraksi fitur berbasis hashing (setara dengan WordHashBag). Ini menerima opsi berikut:hash_bits
, ,seed
ordered
daninvert_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
microsoftml.n_gram: Mengonversi teks menjadi fitur menggunakan n-gram
microsoftml.n_gram: Mengonversi teks menjadi fitur menggunakan n-gram hash
Penghilang stopwords
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk