Bing の tidy 極性: シンプルな例
内部結合の基本がわかったところで、これを「Bing」レキシコンに適用してみましょう。inner_join() は dplyr の関数で、レキシコンのオブジェクトは tidytext の get_sentiments() で取得します。
Bing レキシコンは単語をポジティブまたはネガティブにラベル付けします。次の3つの演習では、この特定のレキシコンを実際に扱います。get_sentiments() を使うには、取得したいレキシコン名として "afinn"、"bing"、"nrc"、"loughran" のような文字列を渡します。
内部結合のワークフロー:
get_sentiments()で目的のレキシコンを取得します。- レキシコンと tidy 形式のテキストデータを
inner_join()に渡します。 inner_join()を動作させるには、共有の列名が必要です。共有の列名がない場合は、追加のパラメータbyにcで列名を指定して宣言します(下記参照)。
object <- x %>%
inner_join(y, by = c("column_from_x" = "column_from_y"))
- 交差したテーブルに対して集計や分析を行います。
この演習はコースの一部です
Rで学ぶSentiment Analysis
演習の手順
ag_txt(Agamemnon の最初の100行)と、その tidy 版である ag_tidy を読み込んであります。
- 比較のため、
ag_txtに対してpolarity()を使ってください。 get_sentiments()に文字列"bing"を渡してレキシコンを取得します。ag_tidyとbingでinner_join()を実行します。- 単語の列名は、
ag_tidyでは"term"、レキシコンでは"word"なので、by引数を指定します。 - 新しいオブジェクト名は
ag_bing_wordsとしてください。
- 単語の列名は、
ag_bing_wordsを出力し、結果に含まれる単語をいくつか確認します。- パイプ演算子 %>% を使って、
ag_bing_wordsをcount()のsentimentに渡します。polarity()のスコアと、感情カテゴリの件数比を比較しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Qdap polarity
___
# Get Bing lexicon
bing <- get_sentiments("___")
# Join text to lexicon
ag_bing_words <- ___(___, ___, by = c("___" = "___"))
# Examine
ag_bing_words
# Get counts by sentiment
ag_bing_words %>%
___(___)