我试图从上个月举行的会议的免费评论样本中绘制出双字母。我使用以下方法(来自Rweka
包):
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 3))
dtm <- TermDocumentMatrix(modif.corpus.irri.aff(MyComments),
control = list(tokenize = BigramTokenizer)
其中modif.corpus.irri.aff()
是我的&#34; To-Corpus格式函数&#34; (顺便使用干文件)。
要显示条形图,代码的结尾是:
dm <- as.matrix(t(dtm))
v <- apply(dm,2,sum)
v <- sort(v, decreasing = TRUE)
v_top <- sort(v[1:nb.terms])
barplot(v_top, horiz=TRUE, cex.names = 0.5,
las = 1, col=grey.colors(10), main="title",
names.arg = names(v_top))
这很有效,但我想显示&#34;配对事件&#34;而不是&#34; bigram事件&#34;,因为我想要计算的想法比bigrams更多。
只是一个例子可以肯定:
我想合并/连接&#34;长会_&#34;和#34; meeting_ long&#34;因为它的想法是一样的:会议时间太长了。
在NgramTokenizer
中是否有控制参数来处理这种区别?或者要添加什么?
答案 0 :(得分:0)
好吧,我认为tokenizer按预期完成了它:“long meeting_”,“meeting_ long”是不同的标记。因此,为了得到你想要的东西,你可以发布处理bigrams(你也有三元组),所以你可以合并那些单词相同但只是按不同的顺序。
或者你可以编写自己的标记化器,而不是一件很难做的事情,相当简单,在三元组的每个二元组中拆分之后,如果所有单词都相同,它会进行相同的检查,然后合并这些情况。但这并不难做到。