Happy songs!
もちろん、単に肯定語と否定語だけでは十分ではありません。この演習では、書き手の感情的な意図を示す「感情価シフター(valence shifter)」について学びます。これまでに、感情価シフターを含まないテキストに polarity() を適用しました。ここでは、強調(amplification)語と否定(negation)語がどのように働くかを確認します。
思い出してください。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で学ぶSentiment Analysis
演習の手順
- データフレーム
conversationを確認し、text 列にある "never" のような感情価シフターに注目します。 conversationのtext列にpolarity()を適用して、会話全体の極性を計算します。- 学生ごとの極性スコアを計算し、結果を
student_polに代入します。- もう一度
polarity()を呼び出し、conversationの2つの列を渡します。 - テキスト変数は
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
___