如何用R中的ngram模型预测句子中的下一个单词

时间:2017-01-08 20:07:34

标签: r nlp prediction text-processing n-gram

我已将预处理的文本数据预处理到语料库中我现在想要基于之前的2个单词构建预测模型(所以我认为3克模型?)。基于我对我读过的文章的理解,以下是我在考虑如何做到这一点:

步骤1:输入两个单词短语,我们希望预测

的下一个单词
# phrase our word prediction will be based on
phrase <- "I love"

第2步:计算3克频率

library(RWeka)

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

dtm_threegram <- DocumentTermMatrix(corpus, control=list(tokenize=threegramTokenizer))

threegram_freq <- sort(colSums(as.matrix(dtm_threegram)), decreasing = TRUE)

下一步是我陷入困境。从概念上讲,我认为我应该将我的3-gram子集化为仅包括以“我喜欢”开头的三个单词组合。然后,我应该保持最高频率3克。例如,如果“我爱你”在我的语料库中出现12次并且“我爱啤酒”出现了15次,那么“啤酒”作为下一个单词的概率高于“爱”,因此该模型应该返回前者。这是正确的方法,如果是这样,我如何以编程方式创建这样的东西?我的threegram_freq对象似乎是带有字符属性的数字类,我不完全理解它是什么。是否可以使用正则表达式仅包含以“我喜欢”开头的元素,然后以最高频率提取3-gram的第3个单词?

谢谢!

0 个答案:

没有答案