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
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)