如何在RWeka中实现备份标记器开关?

时间:2016-06-10 14:37:23

标签: r text-mining tm rweka

我正在使用R-tm-Rweka包进行一些文本挖掘。而不是在单个单词上构建tf-tdm,这对我的目的来说还不够,我必须提取ngrams。我使用@Ben函数TrigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 3)) tdm <- TermDocumentMatrix(a, control = list(tokenize = TrigramTokenizer))
提取三卦。输出有明显错误,见下文。它拾取了4个,3个和2个单词的短语。理想情况下,它应该只获取4个单词的名词短语并删除(3和2个单词)休息。如何强制使用此解决方案,例如Python NLTK有备份标记器选项?

抽象策略->this is incorrect&gt;
  抽象战略委员会->incorrect
  抽象策略棋盘游戏-> this should be the correct output

埃森哲执行官   埃森哲执行简单
  埃森哲执行简单评论

非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你与你所做的尝试非常接近。除了你必须明白你所说的Weka要做的是捕获2克和3克令牌;这就是Weka_control的指定方式。

相反,我建议在不同的标记器中使用不同的标记大小,并根据您的偏好或决策规则选择或合并结果。

我认为在n-gram wordclouds上查看这个great tutorial是值得的。

n-gram文本挖掘的实体代码段是:

# QuadgramTokenizer ####
QuadgramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 4, max = 4)

为4克,

# TrigramTokenizer ####
TrigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 3, max = 3)

3克,当然还有

# BigramTokenizer ####
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2)

为2克。

您可以通过单独运行不同克大小而不是将Weka_control设置为范围来避免您之前的问题。

您可以像这样应用标记器:

tdm.ng <- TermDocumentMatrix(ds5.1g, control = list(tokenize = BigramTokenizer))
dtm.ng <- DocumentTermMatrix(ds5.1g, control = list(tokenize = BigramTokenizer))

如果您仍有问题,请提供一个reproducible示例,我会跟进。