Perbandingan Perhitungan Bobot TF-IDF secara Manual dan Menggunakan Python
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