Stressed Out!
Hier ga je de negatieve woorden aanpassen aan de specifieke tekst. Daarna vergelijk je de standaard- en aangepaste polarity()-scores.
Een populair nummer van Twenty One Pilots heet "Stressed Out". Als je de songtekst bekijkt, zie je dat het nummer gaat over jeugdige nostalgie. Over het algemeen zouden de meeste mensen zeggen dat de polariteit negatief is. In de tekst komen steeds weer stress, angsten en doen-alsof terug.
Laten we de songtekst vergelijken met het standaard subjectiviteitslexicon en ook met een aangepast lexicon.
Om te beginnen moet je controleren of het key.pol-subjectiviteitslexicon de term die je wilt toevoegen niet al bevat. Een manier om dit te controleren is met grep(). De functie grep() geeft de rij terug die tekens bevat die overeenkomen met een zoekpatroon. Hier is een voorbeeld dat wordt gebruikt bij het indexeren.
data_frame[grep("search_pattern", data_frame$column), ]
Nadat je hebt gecontroleerd dat de slang of het nieuwe woord nog niet in het key.pol-lexicon staat, moet je het toevoegen. De onderstaande code gebruikt sentiment_frame() om het nieuwe lexicon te maken. In de code accepteert sentiment_frame() de oorspronkelijke vector met positieve woorden, positive.words. Vervolgens worden de oorspronkelijke negative.words samengevoegd met "smh" en "kappa", beide beschouwd als negatieve slang. Hoewel je de positieve en negatieve gewichten kunt opgeven, zijn de standaardwaarden 1 en -1, dus die zijn hieronder niet opgenomen.
custom_pol <- sentiment_frame(positive.words, c(negative.words, "hate", "pain"))
Nu ben je klaar om polarity toe te passen, en wordt er verwezen naar het aangepaste subjectiviteitslexicon!
Deze oefening maakt deel uit van de cursus
Sentimentanalyse in R
Oefeninstructies
We hebben stressed_out gemaakt met de songtekst van "Stressed Out" van Twenty One Pilots.
- Gebruik
polarity()opstressed_outom de standaardscore te zien. - Controleer
key.polop woorden die "stress" bevatten. Gebruikgrep()om te indexeren door in de kolomxte zoeken. - Maak
custom_polals een nieuw sentiment-dataframe.- Roep
sentiment_frame()aan en geefpositive.wordsals eerste argument door, zonder nieuwe termen toe te voegen. - Gebruik daarna
c()omnegative.wordste combineren met de nieuwe termen "stressed" en "turn back".
- Roep
- Pas
polarity()opnieuw toe opstressed_outmet de extra parameterpolarity.frame = custom_polom te vergelijken hoe de nieuwe woorden de score veranderen naar een nauwkeurigere weergave van het nummer.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# stressed_out has been pre-defined
head(stressed_out)
# Basic lexicon score
___(___)
# Check the subjectivity lexicon
___[___("stress", x)]
# New lexicon
custom_pol <- ___(___, c(negative.words, "___", "___"))
# Compare new score
___(___, polarity.frame = ___)