n-gram の変更
これまで、単語単位のみで TDM と DTM を作成してきました。デフォルトはユニグラムですが、2語以上を含むトークンに注目することもできます。これにより、有用なフレーズを抽出して追加の洞察を得たり、Machine Learning アルゴリズムにとってより優れた予測属性を提供したりできます。
以下の関数は、RWeka パッケージを使ってトライグラム(3語)トークンを作成します。min と max はどちらも 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_dtmとbigram_dtmを確認してください。どちらのほうが用語数が多いでしょうか?
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___