Zacznij terazZacznij za darmo

Introspekcja emocjonalna

W tym ćwiczeniu wyjdziesz poza analizę pozytywnego i negatywnego języka. Zamiast tego podzielisz tekst według każdej z 8 emocji z koła emocji Plutchika i stworzysz wizualizację. Takie podejście daje większą precyzję – zamiast ogólnej oceny „pozytywne/negatywne", możesz przypisać słowa do konkretnych emocji.

Korzystając z leksykonu subiektywności "nrc" z biblioteki tidytext, wykonaj inner_join() z twoim tekstem. Leksykon "nrc" zawiera 8 emocji oraz klasy terminów pozytywnych i negatywnych. Po wykonaniu inner_join() trzeba będzie usunąć słowa pozytywne i negatywne. Można to zrobić za pomocą negacji ! i funkcji grepl().

Funkcja grepl() (ang. „Global Regular Expression Print Logical") zwraca wartość TRUE lub FALSE, gdy w danym wierszu zostanie znaleziony określony wzorzec tekstowy. W tym ćwiczeniu wyszukasz słowa „positive" LUB „negative" za pomocą operatora |, oznaczającego alternatywę – zwykle klawisz ten znajduje się nad klawiszem Enter na klawiaturze. Ponieważ negacja ! poprzedza grepl(), wartości TRUE i FALSE zostają zamienione, a wiersze pasujące do wzorca "positive|negative" są usuwane zamiast zachowywane.

Object <- tibble %>%
  filter(!grepl("positive|negative", column_name))

Następnie użyj count() na zidentyfikowanych słowach, a potem pivot_wider(), aby odpowiednio zorganizować ramkę danych.

comparison.cloud() wymaga, aby dane wejściowe miały nazwy wierszy – dlatego trzeba będzie przekonwertować je na bazową ramkę danych data.frame, używając argumentu row.names.

To ćwiczenie jest częścią kursu

Analiza sentymentu w R

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

moby_tidy <- moby %>%
  # Inner join to nrc lexicon
  ___(___, by = c("term" = "word")) %>% 
  # Drop positive or negative
  ___(!___("___", sentiment)) %>% 
  # Count by sentiment and term
  ___(___, ___) %>% 
  # Pivot sentiment, using n for values
  ___(names_from = ___, values_from = ___, values_fill = ___) %>%
  # Convert to data.frame, making term the row names
  data.frame(row.names = "___")

# Examine
head(moby_tidy)
Edytuj i uruchom kod