Lebih dari sekadar kata: tokenisasi (2)
Paket tidytext memungkinkan Anda menganalisis data teks menggunakan paket "tidyverse" seperti dplyr dan sparklyr. Cara melakukan sentiment analysis berada di luar cakupan kursus ini; Anda dapat mempelajari lebih lanjut di Sentiment Analysis. Latihan ini dirancang agar Anda mendapat gambaran cepat tentang cara melakukannya di Spark.
Secara esensial, sentiment analysis memungkinkan Anda memberikan skor atau emosi pada setiap kata. Misalnya, dalam leksikon AFINN, kata "outstanding" memiliki skor +5, karena hampir selalu digunakan dalam konteks positif. "grace" sedikit positif, dan memiliki skor +1. "fraud" biasanya digunakan dalam konteks negatif, dan memiliki skor -4. Himpunan data skor AFINN dikembalikan oleh get_sentiments("afinn"). Untuk kemudahan, data kata yang telah di-unnest dan leksikon sentimen telah disalin ke Spark.
Biasanya, Anda ingin membandingkan sentimen dari beberapa kelompok data. Untuk melakukan ini, pola kodenya sebagai berikut.
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
Inner join mengambil semua nilai dari tabel pertama, lalu mencari pasangan yang cocok di tabel kedua. Jika menemukan kecocokan, ia menambahkan data dari tabel kedua. Berbeda dengan left join, inner join akan membuang baris apa pun yang tidak memiliki pasangan. Prinsipnya ditunjukkan pada diagram ini.

Seperti left join, inner join adalah jenis mutating join, karena menambahkan kolom ke tabel pertama. Coba tebak fungsi mana yang digunakan untuk inner join, dan bagaimana cara menggunakannya. (Petunjuk: penggunaannya sangat mirip dengan left_join(), anti_join(), dan semi_join()!)
Latihan ini merupakan bagian dari kursus
Pengantar Spark dengan sparklyr di R
Instruksi latihan
Koneksi Spark telah dibuat untuk Anda sebagai spark_conn. Tibble yang berisi kata-kata judul dan leksikon sentimen yang disimpan di Spark telah didefinisikan sebelumnya masing-masing sebagai title_text_tbl dan afinn_sentiments_tbl.
- Buat variabel bernama
sentimental_artistsdarititle_text_tbl.- Gunakan
inner_join()untuk menggabungkanafinn_sentiments_tblketitle_text_tblberdasarkan"word". - Kelompokkan berdasarkan
artist_name. - Ringkas untuk mendefinisikan variabel
positivity, sama dengan jumlah dari kolomscore.
- Gunakan
- Temukan 5 artis teratas dengan judul lagu paling negatif.
- Urutkan
sentimental_artistsberdasarkan positivity menaik. - Gunakan
slice_maxuntuk mengambil 5 hasil teratas.
- Urutkan
- Temukan 5 artis teratas dengan judul lagu paling positif.
- Urutkan
sentimental_artistsberdasarkan positivity menurun. - Ambil 5 hasil teratas.
- Urutkan
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# title_text_tbl, afinn_sentiments_tbl have been pre-defined
title_text_tbl
afinn_sentiments_tbl
sentimental_artists <- title_text_tbl %>%
# Inner join with sentiments on word field
___ %>%
# Group by artist
___ %>%
# Summarize to get positivity
___
sentimental_artists %>%
# Arrange by ascending positivity
___ %>%
# Get top 5
___
sentimental_artists %>%
# Arrange by descending positivity
___ %>%
# Get top 5
___