1文に対する語幹化と語幹補完
この演習では、次の文をドキュメントとして扱います。
"In a complicated haste, Tom rushed to fix a new complication, too complicatedly."
この文には、前の演習で見た「complicate」の3つの形がすべて含まれています。ここでの違いは、この文に対して stemDocument() を呼び出しても、どの単語も語幹化されないまま文が返ってくる点です。コンソールで一度試してみてください。句読点も必ず含めましょう。
これは、stemDocument() が文全体を1つの単語として扱うために起こります。言い換えると、私たちのドキュメントは、長さn(nは単語数)ではなく、長さ1の文字ベクトルになっているのです。この問題を解決するには、まず数問前の演習で学んだ removePunctuation() で句読点を取り除きます。次に、長さ1の文字ベクトルに対して strsplit() を使って長さnに分割し、unlist() し、その後に語幹化と補完を行います。
少し分かりづらく感じても大丈夫です。手順を一つずつ確認していきましょう!
この演習はコースの一部です
Rで学ぶBag-of-Wordsによるテキストマイニング
演習の手順
ドキュメント text_data と補完用辞書 comp_dict はワークスペースに読み込まれています。
removePunctuation()を使ってtext_dataの句読点を削除し、rm_puncに代入します。rm_puncに対してstrsplit()を呼び出し、split引数を" "に設定します。これをunlist()の中にネストし、n_char_vecに代入します。stemDocument()を使ってn_char_vecの語幹化を行い、stem_docに代入します。stemCompletion()を使い、参照コーパスとしてcomp_dictを用いて語幹化したドキュメントを補完し、complete_docを作成します。
stem_doc と complete_doc は想定どおりになりましたか?
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Remove punctuation: rm_punc
rm_punc <- ____
# Create character vector: n_char_vec
n_char_vec <- unlist(___(___, split = " "))
# Perform word stemming: stem_doc
stem_doc <- ___
# Print stem_doc
stem_doc
# Re-complete stemmed document: complete_doc
complete_doc <- ___
# Print complete_doc
complete_doc