开始使用免费开始使用

更改 n-gram

到目前为止,我们只用单词来生成 TDM 和 DTM。默认是使用 unigram(单词),但您也可以关注包含两个或更多单词的 token。这有助于提取有用的短语,从而带来更多洞见,或为机器学习算法提供更好的预测属性。

下面的函数使用 RWeka 包来创建 trigram(三词)token:minmax 都设置为 3

tokenizer <- function(x) {
  NGramTokenizer(x, Weka_control(min = 3, max = 3))
}

然后,可以将自定义的 tokenizer() 函数作为一个额外参数传入 TermDocumentMatrixDocumentTermMatrix 函数:

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_dtmbigram_dtm。哪个包含的词项更多?

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Make tokenizer function 
___ <- function(x) {
  ___(___, ___(___, ___))
}

# Create unigram_dtm
___ <- ___(___)

# Create bigram_dtm
___ <- ___(
  ___,
  ___
)

# Print unigram_dtm
___

# Print bigram_dtm
___
编辑并运行代码