始める無料で始める

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_doccomplete_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
コードを編集して実行