Perbandingan Perhitungan Bobot TF-IDF secara Manual dan Menggunakan Python

Harishamzah
BISA.AI
Published in
3 min readApr 13, 2020
Designed by rawpixel.com / Freepik

Text analysis adalah suatu metode untuk mengekstrak informasi yang berasal dari data tidak terstruktur yaitu data teks. Dalam melakukan tugasnya, komputer tidak dapat memproses data dalam bentuk teks, sehingga pembobotan suatu kata menjadi sangat penting dimana dapat merepresentasikan kata ke dalam bentuk numerik. Salah satu metode representasi data teks menjadi bentuk numerik adalah Term Frequency Inverse Document Frequency (TF-IDF).

Pada dasarnya, TF-IDF bekerja dalam menentukan frekuensi relatif suatu kata kemudian dibandingkan dengan proporsi kata tersebut pada seluruh dokumen [1]. Intuisinya bahwa kata yang muncul di banyak dokumen bukanlah pembeda yang baik, dan harus diberi bobot kurang dari satu yang terjadi dalam beberapa dokumen [2]. Penggabungan skema Term Frequency (TF) dengan Inverse Document Frequency (IDF) telah terbukti sebagai metode yang kuat sebagai teknik untuk memproses data teks atau keperluan lainnya [2].

Berikut adalah contoh perhitungan TF-IDF

Misalkan diberikan beberapa kalimat sebagai berikut:

d1 = saya berangkat ke kampus untuk belajar

d2 = ibu pergi berbelanja ke pasar

d3 = ayah ke kantor untuk bekerja

Corpus atau kumpulan kata yang dibentuk dari beberapa kalimat tersebut adalah “ayah”, “bekerja”, “belajar”, “berangkat”, “berbelanja”, “ibu”, “kampus”, “kantor”, “ke”, “pasar”, “pergi”, “saya”, dan “untuk”.

Pembobotan menggunakan TF-IDF dijelaskan pada persamaan berikut

Dimana

Misalkan kita ingin menghitung bobot pada kata “berangkat” pada kalimat pertama, karena kata “berangkat” muncul satu kali pada dokumen pertama maka perhitungan bobot kata “berangkat” menjadi

Berbeda dengan perhitungan menggunakan library sklearn.feature_extraction di Python, bobot TF-IDF dihitung berdasarkan rumus berikut

Ide dalam menambahkan nilai 1 tersebut yaitu kata yang muncul di setiap dokumen tidak sepenuhnya diabaikan. Perhitungan log pada library TF-IDF di sklearn menggunakan logaritma natural, yaitu dapat ditulis eloga atau dengan kata lain logaritma dengan basis e dengan e = 2.718281828459…. Sehingga perhitungan bobot TF-IDF di Python menjadi

Dalam TfidfVectorizer terdapat beberapa parameter untuk diatur, seperti smooth_idf dan norm. Jika kita pilih smooth_idf = True, maka perhitungan bobot adalah sebagai berikut

Oleh karena itu, bobot pada kata “berangkat” menjadi

Mari kita bandingkan perhitungan manual dengan perhitungan menggunakan Python

Dapat kita lihat bahwa perhitungan manual dan perhitungan menggunakan Python adalah sama. Kemudian parameter norm pada TfidfVectorizer berfungsi sebagai normalisasi nilai bobot yang diperoleh, supaya nilai bobot berada pada range yang sama. Berikut ini adalah hasil dari normalisasi nilai bobot pada perhitungan sebelumnya.

Demikian hasil perhitungan secara manual dan menggunakan Python pada metode TF-IDF.

Daftar Pustaka:

[1] Robertson, S.E. (2004). Understanding inverse document frequency: on theoretical arguments for IDF. Journal of Documentation, 60, 503–520.

[2] Ramos, J.E. (2003). Using TF-IDF to Determine Word Relevance in Document Queries.

[3] https://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction

--

--