Lompat ke konten utama
←

Mengolah Teks dengan Python

Pelajaran 13 dari 16

TF-IDF, kemiripan, dan klasifikasi teks

TF-IDF: memberi bobot pada kata yang membedakan

Setelah pelajaran ini kamu bisa menghitung idf dengan rumus scikit-learn dan membaca bobot TF-IDF dari TfidfVectorizer.

±13 menitDiperiksa 27 Sep 2026

Materi

Hitungan mentah memberi bobot besar pada kata yang muncul di hampir semua dokumen, padahal kata seperti itu sedikit membedakan dokumen. TF-IDF (term frequency–inverse document frequency) mengalikan hitungan kata di dokumen (tf) dengan bobot idf yang mengecil bila kata muncul di banyak dokumen. Dengan setelan bawaan scikit-learn (smooth_idf=True), rumusnya idf(t) = ln((1 + n) / (1 + df(t))) + 1, dengan n banyaknya dokumen dan df(t) banyaknya dokumen yang memuat t.

import math

n = 4                        # empat dokumen
df = {"hotel": 4, "kolam": 1}
for kata, d in df.items():
    print(kata, round(math.log((1 + n) / (1 + d)) + 1, 3))
# hotel 1.0
# kolam 1.916

Kata yang ada di semua dokumen mendapat idf tepat 1, karena ln(1) = 0; tambahan + 1 membuatnya tidak hilang sama sekali. Setelah tf dikalikan idf, TfidfVectorizer menormalkan setiap baris dengan norma L2 (norm="l2"), sehingga panjang vektor setiap dokumen bernilai 1 dan dokumen panjang tidak otomatis mendapat angka besar.

TfidfVectorizer menggabungkan CountVectorizer dan TfidfTransformer dalam satu langkah, dengan parameter pengolahan teks yang sama: lowercase, token_pattern, stop_words, dan ngram_range. Nilai idf setiap kata setelah fit tersedia di atribut idf_, urut sesuai get_feature_names_out(). Kata dengan bobot tertinggi di satu baris adalah kata yang paling membedakan dokumen itu dari dokumen lain.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Korpus berisi 9 dokumen, dan kata wifi muncul di 2 di antaranya. Berapa idf kata itu dengan rumus bawaan scikit-learn? Bulatkan 2 desimal dan tulis dengan koma, misalnya 1,50.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke