1. 学ぶ
  2. /
  3. コース
  4. /
  5. Rで学ぶBag-of-Wordsによるテキストマイニング

Connected

演習

頻度の重み付けを変える

これまで、DocumentTermMatrix や TermDocumentMatrix では、ドキュメント内の用語を単純にカウントしてきました。この演習では、単純な出現頻度ではなく、TfIdf の重み付けについて学びます。TfIdf は「term frequency-inverse document frequency(用語頻度–逆文書頻度)」の略で、語彙の多様性が限られた大きなコーパスに対して用いられます。

TfIdf は用語をカウント(すなわち Tf)し、文書長で正規化したうえで、その語が多くの文書に現れるほど値にペナルティを課します。これは直感的です。一般的に出現する語は重要かもしれませんが、洞察にはつながりにくいからです。このペナルティの側面を表すのが逆文書頻度(すなわち Idf)です。

たとえば、カスタマーサービスのメモでは「customer」を「cu」と略しているかもしれません。あるメモには「the cu has a damaged package」、別のメモには「cu called with question about delivery」と書かれているとします。文書頻度の重み付けでは「cu」は2回出現するため有益だとみなされます。しかし TfIdf では、「cu」はすべての文書に現れるためペナルティを受けます。その結果、「cu」は新規性がないと判断され、値は 0 に近づき、他の語が分析でより高い値を取れるようになります。

指示1 / 2

undefined XP
  • 1
    • text_corp を使って、用語頻度ベースの TermDocumentMatrix() を作成し、tdm としてください。
    • tdm を行列に変換して、tdm_m を作成します。
    • いくつかのツイートにおける "coffee"、"espresso"、"latte" の頻度を確認します。tdm_m を行で c("coffee", "espresso", "latte")、列で 161 から 166 を指定して抽出してください。
  • 2
    • TermDocumentMatrix() を編集して TfIdf の重み付けを使います。関数の引数に control = list(weighting = weightTfIdf) を渡してください。
    • コードを実行して、演習の前半で得たスコアと新しいスコアを比較しましょう。