对句子进行词干提取与词干还原
本练习把下面这句话当作我们的文档:
"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