更改 n-gram
到目前为止,我们只用单词来生成 TDM 和 DTM。默认是使用 unigram(单词),但您也可以关注包含两个或更多单词的 token。这有助于提取有用的短语,从而带来更多洞见,或为机器学习算法提供更好的预测属性。
下面的函数使用 RWeka 包来创建 trigram(三词)token: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 已在您的工作区中可用。
- 创建一个如上所示的
tokenizer函数,用于生成由 2 个词组成的二元组。 - 在不使用
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
___