始める無料で始める

n-gram の変更

これまで、単語単位のみで TDM と DTM を作成してきました。デフォルトはユニグラムですが、2語以上を含むトークンに注目することもできます。これにより、有用なフレーズを抽出して追加の洞察を得たり、Machine Learning アルゴリズムにとってより優れた予測属性を提供したりできます。

以下の関数は、RWeka パッケージを使ってトライグラム(3語)トークンを作成します。minmax はどちらも 3 に設定されています。

tokenizer <- function(x) {
  NGramTokenizer(x, Weka_control(min = 3, max = 3))
}

その後、カスタマイズした tokenizer() 関数を、追加の引数として TermDocumentMatrix または DocumentTermMatrix 関数に渡せます。

tdm <- TermDocumentMatrix(
  corpus, 
  control = list(tokenize = tokenizer)
)

この演習はコースの一部です

Rで学ぶBag-of-Wordsによるテキストマイニング

コースを見る

演習の手順

corpus はこれまでと同様に chardonnay のツイートで前処理され、生成されたオブジェクト text_corp がワークスペースに用意されています。

  • 上の例のように、2語のバイグラムを作成する tokenizer 関数を作ってください。
  • tokenizer() 関数は使わずに、text_corp に対して DocumentTermMatrix() を呼び出し、unigram_dtm を作成してください。
  • 先ほど作成した tokenizer() を使って、text_corp に対して DocumentTermMatrix() を実行し、bigram_dtm を作成してください。
  • unigram_dtmbigram_dtm を確認してください。どちらのほうが用語数が多いでしょうか?

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Make tokenizer function 
___ <- function(x) {
  ___(___, ___(___, ___))
}

# Create unigram_dtm
___ <- ___(___)

# Create bigram_dtm
___ <- ___(
  ___,
  ___
)

# Print unigram_dtm
___

# Print bigram_dtm
___
コードを編集して実行