BaşlayınÜcretsiz başlayın

Kelimelerden fazlası: tokenizasyon (2)

tidytext paketi, dplyr ve sparklyr gibi "tidyverse" paketlerini kullanarak metin verilerini analiz etmene olanak tanır. Sentiment analizi bu dersin kapsamı dışında; daha fazlası için Sentiment Analysis kursuna göz atabilirsin. Bu egzersiz, bunu Spark üzerinde nasıl yapabileceğine hızlı bir giriş sağlamayı amaçlıyor.

Sentiment analizi temelde her kelimeye bir puan ya da duygu atamana izin verir. Örneğin, AFINN sözlüğünde "outstanding" kelimesinin puanı +5'tir; çünkü neredeyse her zaman olumlu bir bağlamda kullanılır. "grace" hafif olumlu bir kelimedir ve puanı +1'dir. "fraud" genellikle olumsuz bir bağlamda kullanılır ve puanı -4'tür. AFINN puanları veri kümesi get_sentiments("afinn") ile döndürülür. Kolaylık olması için, açılmış (unnested) kelime verileri ve sentiment sözlüğü Spark'a kopyalanmıştır.

Genellikle, birden fazla veri grubunun sentiment'ini karşılaştırmak istersin. Bunu yapmak için kod kalıbı aşağıdaki gibidir.

text_data %>%
  inner_join(sentiments, by = "word") %>%
  group_by(some_group) %>%
  summarize(positivity = sum(score))

Bir inner join, ilk tablodaki tüm değerleri alır ve ikinci tabloda eşleşme arar. Eşleşme bulursa, ikinci tablodan verileri ekler. Left join'den farklı olarak, eşleşme bulamadığı satırları düşürür. İlke, bu diyagramda gösterilmiştir.

An inner join, explained using table of colors.

Left join'ler gibi, inner join'ler de bir tür mutating join'dir; çünkü ilk tabloya sütunlar eklerler. Inner join'ler için hangi fonksiyonu kullanacağını ve nasıl kullanacağını tahmin etmeye çalış. (İpucu: kullanımı left_join(), anti_join() ve semi_join() ile gerçekten çok benzer!)

Bu egzersiz, kursun bir parçasıdır

R ile sparklyr kullanarak Spark’a Giriş

Kursa Göz Atın

Egzersiz talimatları

Senin için spark_conn olarak bir Spark bağlantısı oluşturuldu. Başlık kelimelerine ait tibbles ve Spark'ta saklanan sentiment sözlüğü sırasıyla title_text_tbl ve afinn_sentiments_tbl olarak önceden tanımlandı.

  • title_text_tbl'den sentimental_artists adlı bir değişken oluştur.
    • inner_join() ile afinn_sentiments_tbl'yi "word" üzerinden title_text_tbl ile birleştir.
    • artist_name'e göre gruplandır.
    • score alanının toplamına eşit olacak şekilde positivity adlı bir değişken oluşturmak için özetle.
  • En olumsuz şarkı başlıklarına sahip ilk 5 sanatçıyı bul.
    • sentimental_artists'ı artan positivity'ye göre sırala.
    • İlk 5 sonucu almak için slice_max kullan.
  • En olumlu şarkı başlıklarına sahip ilk 5 sanatçıyı bul.
    • sentimental_artists'ı azalan positivity'ye göre sırala.
    • İlk 5 sonucu al.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# 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
  ___
Kodu Düzenle ve Çalıştır