Praktikum Analisis Data Teks
Dokumen ini memperkenalkan analisis data teks menggunakan R — mulai dari pra-pemrosesan teks mentah hingga mengidentifikasi sentimen dan pola kata dalam korpus.
Yang akan dipelajari:
- Tokenisasi dan penghapusan stop words
- Menghitung frekuensi kata
- Analisis n-gram (bigram)
- Analisis sentimen berbasis leksikon
1. Data Teks dan Pra-Pemrosesan
Data teks adalah informasi yang tersimpan dalam bentuk kata dan kalimat. Sebelum dianalisis, teks perlu “dibersihkan” melalui beberapa tahap.
Tahapan pra-pemrosesan:
- Tokenisasi — memecah teks menjadi kata-kata individual
- Normalisasi — mengubah semua huruf menjadi huruf kecil
- Penghapusan stop words — membuang kata umum tanpa makna analitis
1.1 Membuat Data dan Tokenisasi
1.2 Menghapus Stop Words
Stop words seperti “dan”, “atau”, “yang” sangat sering muncul di hampir semua teks, sehingga tidak memberi informasi yang berguna tentang isi atau topik teks. Menghapusnya membuat analisis frekuensi lebih bermakna karena hanya mempertahankan kata-kata yang benar-benar relevan.
Pertanyaan: Kata apa yang masih tersisa setelah stop words dihapus, dan apa yang bisa Anda simpulkan dari kata-kata tersebut?
2. Analisis Frekuensi Kata
2.1 Menghitung Frekuensi
2.2 Bar Plot Frekuensi
Tidak selalu. Kata “produk” mungkin sering muncul karena konteks domain (ulasan produk), bukan karena membawa makna sentimen. Frekuensi perlu dikombinasikan dengan analisis konteks atau sentimen agar lebih bermakna.
Pertanyaan: Dari bar plot, kata apa yang paling dominan? Apakah itu kata yang paling “informatif”?
3. Analisis N-gram (Bigram)
Bigram adalah pasangan dua kata yang berdekatan. Ini membantu memahami konteks kata, bukan sekadar frekuensinya secara terpisah.
Kata tunggal “tidak” bisa muncul di konteks positif maupun negatif. Bigram “tidak bagus” atau “tidak puas” menangkap sentimen negatif secara eksplisit. Ini membuat analisis lebih akurat, terutama untuk kalimat yang menggunakan negasi.
Pertanyaan: Bigram apa yang paling bermakna untuk memahami sentimen ulasan?
4. Analisis Sentimen
Analisis sentimen mengklasifikasikan teks sebagai positif atau negatif berdasarkan kata-kata yang digunakan, dengan bantuan kamus/leksikon sentimen.
4.1 Kamus Sentimen Manual
4.2 Menggabungkan dengan Token
4.3 Skor Sentimen per Ulasan
Pendekatan leksikon bergantung pada daftar kata yang sudah dibuat sebelumnya. Kelemahannya:
(1) Tidak bisa menangkap sarkasme (“Bagus sekali… NOT”)
(2) Kata baru/slang tidak ada di kamus
(3) Tidak mempertimbangkan konteks kalimat secara utuh
Pendekatan berbasis machine learning seperti BERT atau model berbasis deep learning lebih mampu menangkap nuansa konteks.
Pertanyaan: Ulasan nomor berapa yang paling positif? Apakah hasilnya sesuai dengan membaca teks aslinya?
5. Latihan
Latihan 1 — Mudah: Tokenisasi Teks Baru
Tokenisasi kalimat berikut dan hitung frekuensi katanya.
token_baru <- teks_baru %>%
unnest_tokens(kata, teks)
token_baru %>%
count(kata, sort = TRUE) %>%
head(10)Kata “data” dan “r” kemungkinan akan mendominasi karena sering muncul dalam ketiga kalimat.
Latihan 2 — Mudah: Hapus Stop Words dan Buat Bar Plot
Lanjutkan dari Latihan 1: hapus stop words, lalu buat bar plot 5 kata teratas.
token_bersih2 <- token_baru %>%
anti_join(stop_tambahan, by = "kata")
frek2 <- token_bersih2 %>%
count(kata, sort = TRUE)
top5 <- head(frek2, 5)
par(mar = c(5, 4, 3, 2))
barplot(
top5$n,
names.arg = top5$kata,
col = "steelblue",
main = "5 Kata Teratas",
ylab = "Frekuensi",
las = 2
)Latihan 3 — Sedang: Tambahkan Kata ke Kamus dan Hitung Skor Sentimen
Tambahkan kata “mudah” dan “powerful” (positif), serta “sulit” dan “lambat” (negatif) ke kamus sentimen yang sudah ada. Kemudian hitung skor sentimen untuk teks_baru.
kamus_baru <- rbind(
kamus_sentimen,
data.frame(
kata = c("mudah", "powerful", "sulit", "lambat"),
sentimen = c("positif", "positif", "negatif", "negatif")
)
)
skor_baru <- token_baru %>%
inner_join(kamus_baru, by = "kata") %>%
count(id, sentimen) %>%
pivot_wider(names_from = sentimen, values_from = n, values_fill = 0) %>%
mutate(skor = positif - negatif)
skor_baruSemua kalimat seharusnya mendapat skor positif karena konteksnya positif tentang R.
Ringkasan
| Konsep | Fungsi R | Keterangan |
|---|---|---|
| Tokenisasi | unnest_tokens() |
Memecah teks menjadi kata |
| Hapus stop words | anti_join() |
Membuang kata umum tanpa makna |
| Frekuensi kata | count() |
Menghitung kemunculan setiap kata |
| Bigram | unnest_tokens(..., token = "ngrams", n = 2) |
Pasangan dua kata berurutan |
| Sentimen | inner_join() + pivot_wider() |
Menggabungkan dengan kamus sentimen |