用R中的text2vec预测下一个单词

Sas*_*sha 4 nlp r n-gram text2vec

我正在R中构建一个语言模型,根据前面的单词预测句子中的下一个单词.目前我的模型是一个简单的ngram模型,带有Kneser-Ney平滑.它通过在训练集中找到具有最大概率(频率)的ngram来预测下一个字,其中平滑提供了一种内插低阶ngrams的方法,这在高阶ngram具有低频率并且可能不提供可靠预测的情况下是有利的. .虽然这种方法工作得相当好,但是在n-gram无法捕获上下文的情况下它会失败.例如,"外面温暖而阳光充足,让我们去......"和"外面寒冷和下雨,让我们去......"将提出相同的预测,因为没有捕捉到天气的背景在最后的n-gram中(假设n <5).

我正在寻找更高级的方法,我找到了text2vec包,它允许将单词映射到向量空间,其中具有相似含义的单词用相似(近似)向量表示.我有一种感觉,这种表示可能有助于下一个单词预测,但我无法弄清楚如何定义训练任务.我的问题是,如果text2vec是用于下一个单词预测的正确工具,如果是,那么可以用于此任务的合适预测算法是什么?

Dmi*_*nov 6

你可以尝试char-rnnword-rnn(谷歌一点点).对于字符级模型R/mxnet实现,请查看mxnet示例.可能有可能使用text2vec GloVe嵌入将此代码扩展到字级模型.

如果您有任何成功,请告诉我们(我的意思是text2vec或/和mxnet开发人员).对于R社区我将是非常有趣的案例.我想进行这样的模型/实验,但仍然没有时间.


Aar*_*ron 1

您的直觉是正确的,词嵌入向量可以通过合并长距离依赖关系来改进语言模型。您正在寻找的算法称为 RNNLM(循环神经网络语言模型)。http://www.rnnlm.org/