Mulai sekarangMulai gratis

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.

An inner join, explained using table of colors.

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

Lihat Kursus

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_artists dari title_text_tbl.
    • Gunakan inner_join() untuk menggabungkan afinn_sentiments_tbl ke title_text_tbl berdasarkan "word".
    • Kelompokkan berdasarkan artist_name.
    • Ringkas untuk mendefinisikan variabel positivity, sama dengan jumlah dari kolom score.
  • Temukan 5 artis teratas dengan judul lagu paling negatif.
    • Urutkan sentimental_artists berdasarkan positivity menaik.
    • Gunakan slice_max untuk mengambil 5 hasil teratas.
  • Temukan 5 artis teratas dengan judul lagu paling positif.
    • Urutkan sentimental_artists berdasarkan positivity menurun.
    • Ambil 5 hasil teratas.

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
  ___
Edit dan Jalankan Kode