Apa itu TF-IDF
TF-IDF adalah singkatan dari Term Frequency - Inverse Document Frequency dan merupakan representasi vektor dari bahasa alami.
TF-IDF diperoleh dengan mengalikan TF dan IDF.
: katat : dokumend : kumpulan dokumen (korpus)D
Term Frequency
TF (Term Frequency) mewakili frekuensi kemunculan sebuah kata. Kata-kata yang lebih sering muncul dianggap lebih penting, sedangkan kata-kata yang lebih jarang muncul dianggap kurang penting. Dengan kata lain, kata-kata yang sering muncul berguna untuk mengidentifikasi karakteristik dokumen. Ada beberapa definisi frekuensi kemunculan.
- Berapa kali sebuah kata muncul dalam sebuah dokumen (hitungan mentah)
- Frekuensi kemunculan yang disesuaikan dengan panjang dokumen (jumlah kemunculan sebuah kata dibagi dengan jumlah kata dalam dokumen)
- Frekuensi kemunculan yang ditransformasikan ke dalam log (misalnya log(1 + jumlah mentah))
- Frekuensi kemunculan boolean (1 jika istilah tersebut muncul dalam dokumen, 0 jika tidak)
Dalam kasus ini, kita akan menghitung TF sebagai jumlah kemunculan sebuah kata dibagi dengan jumlah kata dalam dokumen.
Misalkan kita memiliki dokumen berikut.
- Dokumen 1: It is going to rain today. I like sound of rain.
- Dokumen 2: Today I am going to watch Netflix.
TF adalah sebagai berikut.
TF (Dokumen 1) | TF (Dokumen 2) | |
---|---|---|
it | 0 | |
is | 0 | |
going | ||
to | ||
rain | 0 | |
today | ||
i | ||
like | 0 | |
sound | 0 | |
of | 0 | |
am | 0 | |
watch | 0 | |
Netflix | 0 |
Inverse Document Frequency
IDF (Inverse Document Frequency) berfungsi sebagai penyaring untuk kata-kata umum seperti ini dan adalah. Kata-kata yang sering muncul di berbagai dokumen memiliki IDF yang rendah, sedangkan kata-kata yang jarang muncul memiliki IDF yang tinggi.
: katat : dokumenD : kumpulan dokumen (korpus)D : jumlahN dalamd D : jumlah dokumencount(d \in D:t \in d) di mana katad muncult
Misalkan Anda memiliki dokumen berikut ini.
- Dokumen 1: It is going to rain today. I like sound of rain.
- Dokumen 2: Today I am going to watch Netflix.
IDF akan terlihat seperti ini.
IDF | |
---|---|
it | |
is | |
going | |
to | |
rain | |
today | |
i | |
like | |
sound | |
of | |
am | |
watch | |
Netflix |
Pustaka untuk menghitung TF-IDF
TF-IDF dapat dihitung dengan menggunakan pustaka utama berikut ini.
- scikit-learn
- TensorFlow(2.x)/ Keras
- TensorFlow Extended(TFX)
Namun, rumusnya mungkin berbeda tergantung pada pustaka dan opsi yang ditentukan. Dalam pembelajaran mesin, fungsi TF-IDF dari scikit-learn sering digunakan.
Dalam contoh ini, kita menggunakan sklearn.feature_extraction.text.TfidfVectorizer
untuk menghitung TF-IDF dari dokumen-dokumen berikut.
- Dokumen 1: It is going to rain today. I like sound of rain.
- Dokumen 2: Today I am going to watch Netflix.
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
document1 = "It is going to rain today. I like sound of rain."
document2 = "Today I am going to watch Netflix."
df = pd.DataFrame({'id': ["Document 1", "Docuemnt 2"],
'document': [document1, document2]
})
# calculate TF-IDF
tfidf_vectorizer = TfidfVectorizer(use_idf=True,lowercase=True)
# get TF-IDF score of all words in documents
tfidf_matrix = tfidf_vectorizer.fit_transform(df['document'])
# term list
terms = tfidf_vectorizer.get_feature_names()
# vectors of words
tfidfs = tfidf_matrix.toarray()
>> terms
['am',
'going',
'is',
'it',
'like',
'netflix',
'of',
'rain',
'sound',
'to',
'today',
'watch']
>> tfidfs
array([[0. , 0.28867513, 0.28867513, 0.28867513, 0.28867513,
0. , 0.28867513, 0.57735027, 0.28867513, 0.28867513,
0.28867513, 0. ],
[0.40824829, 0.40824829, 0. , 0. , 0. ,
0.40824829, 0. , 0. , 0. , 0.40824829,
0.40824829, 0.40824829]])
df_tfidf = pd.DataFrame(tfidfs,
columns=terms,
index=["Document 1", "Document 2"]
)
display(df_tfidf)
am | going | is | it | like | netflix | of | rain | sound | to | today | watch | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Document 1 | 0 | 0.289 | 0.289 | 0.289 | 0.289 | 0 | 0.289 | 0.577 | 0.289 | 0.289 | 0.289 | 0 |
Document 2 | 0.408 | 0.408 | 0 | 0 | 0 | 0.408 | 0 | 0 | 0 | 0.408 | 0.408 | 0.408 |
Nilai-nilai di atas adalah nilai TF-IDF untuk setiap kata. TfidfVectorizer
melakukan normalisasi secara internal.
Semakin tinggi nilai TF-IDF, semakin penting kata tersebut dalam dokumen.
Contoh penggunaan TF-IDF
IF-IDF digunakan dalam situasi berikut
- Pengambilan informasi
- Peringkasan teks
- Ekstraksi kata kunci
- Mencari dokumen yang mirip
- Rekomendasi artikel terkait
Referensi