對一句話做詞幹提取與詞幹還原
把下面這句話當作本題的文件:
"In a complicated haste, Tom rushed to fix a new complication, too complicatedly."
這句話包含了和上一題相同、源自「complicate」的三種詞形。不同的是,即使你對這句話呼叫 stemDocument(),它也會原封不動地回傳整句,沒有對任何單字做詞幹提取。先在主控台試試看吧,記得把標點符號也包含進去。
之所以會這樣,是因為 stemDocument() 把整句話當成一個單字。也就是說,我們的文件是長度為 1 的字元向量,而不是長度為 n(n 為文件中的單字數)。為了處理這個問題,我們先用你在前面幾題學過的 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