1. 学ぶ
  2. /
  3. コース
  4. /
  5. Rで学ぶSentiment Analysis

Connected

演習

DTM と tidytext の行列を比べる

tidyverse は、共通の理念を持ち、連携して動作する R パッケージ群です。この章では、データ操作に使ういくつかの tidy な関数を扱います。この演習では、DTM と、tidy なテキストデータフレームである tibble を比較します。

tidyverse では、各観測値はデータフレームの1行になります。基本的なデータ構造が同じなので、異なるパッケージ間での作業がずっと簡単になります。本コースの一部は、このデータ構造を採用する tidytext パッケージに大きく依拠しています。

たとえば、magrittr パッケージの演算子 %>% にすでに慣れているかもしれません。これは、左辺のオブジェクトを右辺の関数の第1引数として渡します。

次の例では、data オブジェクトを function1() に渡しています。かっこが空なのに注目してください。さらにその出力が function2() に渡されます。最後の関数では、function1() の出力がすでに渡されているため、data オブジェクトを追加する必要はありません。ただし、仮の引数 some_parameter を TRUE として指定しています。これらのパイプ処理の結果として、object が作成されます。

object <- data %>% 
           function1() %>%
           function2(some_parameter = TRUE)

%>% 演算子を使うために、必ずしも magrittr を読み込む必要はありません。dplyr にも含まれているからです。 dplyr には、後ほど学ぶ inner_join() や、集計に使う count() もあります。さらに、新しい変数を作成したり既存の変数を変更するための mutate() も使います。

object <- data %>%
  mutate(new_Var_name = Var1 - Var2)

変数を変更する場合は次のようにします。

object <- data %>%
  mutate(Var1 = as.factor(Var1))

また、各行が本の1行に対応し、ポジティブ値とネガティブ値を列にするようデータを整形するために、tidyr の pivot_wider() も使用します。

index negative positive
42 2 0
43 0 1
44 1 0

DTM を tidy 形式に変換するには、broom パッケージの tidy() を使います。

tidy_format <- tidy(Document_Term_Matrix)

この演習では、ギリシャ悲劇『Agamemnon』のテキストを使用します。『Agamemnon』は、婚姻の不貞と殺人を描いた物語です。コピーはこちらからダウンロードできます。

指示

100 XP

この演習用に、クリーンな DTM ag_dtm をすでに用意しています。

  • ag_dtm に as.matrix() を適用して、ag_dtm_m を作成します。
  • 角かっこ [ と ] を使って、ag_dtm_m の行 2206 を抽出します。
  • tidy() を ag_dtm に適用し、新しいオブジェクトを ag_tidy と名付けます。
  • tidy 形式を比較するために、ag_tidy の行 [831:835, ] を確認します。ステップ2で確認した ag_dtm_m の該当部分に出てきた単語が見つかります。