開心的歌!
當然,只有正面與負面字詞還不夠。在這個練習中,你會學到會影響語意傾向的 valence shifters,它們能揭示作者的情緒意圖。先前你把 polarity() 用在沒有 valence shifters 的文字上。這次你會看到「加強」與「否定」字詞如何實際影響結果。
回想一下,在 polarity() 裡,加強字詞會在正面字詞上加上 0.8,使正面分數變成 1.8。對於負面字詞則減去 0.8,總分變成 -1.8。接著,分數會除以總詞數的平方根。
看看 Frank Sinatra 的例子:
- 「It was a very good year」
「good」等於 1,而「very」再加 0.8。因此 1.8/sqrt(6) 的結果是 0.73 的極性分數。
像「not」這樣的否定字詞會把主觀性分數反轉。再看 Bobby McFerrin 的例子:
- 「Don't worry Be Happy」
由於否定「don't」,「worry」現在等於 1。再加上「happy」的 +1,總和為 2。共有 4 個詞,因此 2 / sqrt(4) 的極性分數為 1。
本練習屬於課程
R 情感分析
練習說明
- 檢視對話資料框
conversation,注意 text 欄中的「never」等 valence shifters。 - 對
conversation的text欄套用polarity(),計算整段對話的極性。 - 依學生計算極性分數,並將結果指定給
student_pol。- 再次呼叫
polarity(),這次傳入conversation的兩個欄位。 - 文字變數是
text,分組變數是student。
- 再次呼叫
- 若要查看學生層級的結果,對
student_pol使用scores()。 - 對
student_pol使用counts()會列出整個資料框的句子層級極性,並附上辨識到的詞典字詞。 - 名為
student_pol的極性物件可用plot()繪圖。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Examine conversation
___
# Polarity - All
___
# Polarity - Grouped
student_pol <- conversation %$%
___(___, ___)
# Student results
___
# Sentence by sentence
___
# qdap plot
___