Anda di halaman 1dari 5

Natural Language Processing: Text Data Vectorization

Features di dalam machine learning umumnya adalah feature numerik yang dapat digunakan
untuk suatu operasi matematika, seperti pemfaktoran matrix, dot product, dan lain-lain. Tetapi,
dalam berbagai kasus, dataset tidak memiliki feature numeric, sebagai contoh seperti
sentimenal analisis dari pengguna Twitter/Facebook, recomendasi IMDB/Netfliz Movie. Dalam
kasus di atas, dataset mengandung nilai numeric, nilai string, nilai character, nilai kategorikal,
dan koneksi yang terhubung. Konversi dari tipe tipe di atas menjadi feature numeric disebut
dengan featurization.

Di chapter ini, saya akan mendiskusikan bagaimana cara untuk mengubah feature string
menjadi feature numeric. Mari kita lihat review berikut:

Gambar 1 dan gambar 2 merepresentasikan perbedaan 2 review user untuk suatu produk. Kita
dapat gunakan type dari review tersebut di dalam dataset untuk memprediksi sentiment dari
user. Tetapi, feature ini dalam bentuk string. Jadi kita perlu mengubah feature tersebut menjadi
feature numeric. Dalam mengubah data string menjadi data numeri salah satu metode yang
digunakan adalah sebagai berikut:

1. Bag of Words
2. TFIDF
3. Worf2Vec
Text Preprocessing

Data mentah mengandung nilai numeric, tanda baca, character special, dan lain lain yang di
tunjukan di gambar 1 dan gambar 2. Nilai ini dapat menghambat performa model. Jadi sebelum
mengaplikasikan setiap text featurization, pertama kita perlu mengubah data mentah menjadi
data “bermakna” yang biasa disebut sebagai text preprocessing. Hal ini dilakukan dengan
mengikuti cara berikut.

1. Menghapus Noisy Data

Di dalam kalimat umum, noisy data dapat didefinisikan sebagai header, footer, HTML, XML, dan
markup data. Karena jenis data ini tidak berarti dan tidak memberikan informasi apa pun, maka
wajib untuk menghapus jenis data yang bising ini. Dalam python HTML, XML dapat dihapus oleh
perpustakaan BeautifulSoup saat markup, header dapat dihapus dengan menggunakan
ekspresi regular.

2. Tokenization

Dalam tokenization kami mengonversi grup kalimat menjadi token. Ini juga disebut segmentasi
teks atau analisis leksikal. Ini pada dasarnya memecah data menjadi sejumlah kecil kata-kata.
Sebagai contoh, kita memiliki kalimat “Ross 128 is earth like planet. Can we survive in that
planet?”. Setelah tokenization, kalimat ini akan menjadi [‘Ross’, ‘128’, ‘is’, ‘earth’, ‘like’, ‘planet’,
‘.’, ‘Can’, ‘we’, ‘survive’, ‘in’, ‘that’, ‘planet’, ‘?’]. Tokenisasi dengan python dapat dilakukan
dengan fungsi word_tokenize () library python NLTK.

3. Normalisasi

Sebelum melakukan normalisasi, pertama-tama amati dengan cermat output dari tokenization.
Apakah output tokenization dapat dianggap sebagai hasil akhir? Bisakah kita mengekstrak lebih
banyak informasi yang berarti dari tokenize data?

Dalam tokenaization kami menemukan berbagai kata seperti tanda baca, stop words (adalah,
dalam, itu, bisa dll), kata-kata huruf besar dan kata-kata huruf kecil. Setelah tokenization kita
tidak fokus pada level teks tetapi pada level kata. Jadi dengan melakukan stemming,
lemmatization kita dapat mengubah kata tokenize menjadi kata yang lebih bermakna. Misalnya
- [‘ross ’,‘ 128 ’,‘ earth ’,‘ like ’,‘ planet ’,‘ bertahan hidup ’,‘ planet ’]. Seperti yang dapat kita
lihat bahwa semua tanda baca dan stop words telah dihapus dan membuat data lebih
bermakna
Bag Of Words

Hal ini adalah model dasar yang digunakan di dalam Natural Language Processing. Lalu,
mengapa disebt dengan bag of words? Karena setiap urutan kata dalam document itu dibuang,
dan hanya memberi tahu kata apa saja kah yang terdapat di dalam document. Mari kita pahami
conto Bag of words berikut,

Di sini setiap kalimat adalah dokumen yang terpisah. Jika kita membuat daftar kata sedemikian
rupa sehingga satu kata harus muncul hanya sekali daripada daftar kita maka akan seperti
berikut:

Jadi, bagaimana sebah kata dapat dikonversi menjadi vector yang bisa di mengerti dengan
contoh jumlah kata sederhana, di mana kita menghitung setiap kemunculan kata kata dalam
document. Misalnya pada kalimat “There used to be Stone Age” dapat direpresentasikan
sebagai berikut:
Jadi di sini kita pada dasarnya mengubah kata menjadi vektor. Dengan mengikuti pendekatan
yang sama nilai vektor lainnya adalah sebagai berikut:

Pendekatan yang dibahas di atas adalah unigram karena kami hanya mempertimbangkan satu
kata pada satu waktu. Demikian pula kita memiliki bigram (menggunakan dua kata sekaligus -
misalnya - There used, Used to, to be, be Stone, Stone age), trigram (menggunakan tiga kata
sekaligus - misalnya there used to, used to be ,to be Stone,be Stone Age), n-gram
(menggunakan n kata pada suatu waktu). Oleh karena itu, proses konversi teks menjadi vektor
disebut vektorisasi (Vectorization).

Dengan menggunakan fungsi CountVectorizer kita dapat mengkonversi dokumen teks ke


matriks jumlah kata. Matriks yang diproduksi di sini adalah matriks sparse. Dengan
menggunakan CountVectorizer pada dokumen di atas kita mendapatkan matriks sparse 5 * 15
bertipe numpy.int64.
Setelah menerapkan CountVectorizer kita dapat memetakan setiap kata ke indeks fitur seperti
yang ditunjukkan pada gambar 3

Ini dapat ditransformasikan menjadi matriks jarang dengan menggunakan seperti yang
ditunjukkan pada gambar 4

Note - CountVectorize menghasilkan matriks yang kadang-kadang tidak cocok untuk beberapa
model pembelajaran mesin, maka pertama-tama ubah matriks jarang ini menjadi matriks padat
kemudian menerapkan model pembelajaran mesin

Anda mungkin juga menyukai