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:


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:

  1. Tokenisasi — memecah teks menjadi kata-kata individual
  2. Normalisasi — mengubah semua huruf menjadi huruf kecil
  3. 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_baru

Semua 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