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

用R中的text2vec预测下一个单词,r,nlp,n-gram,text2vec,R,Nlp,N Gram,Text2vec,我正在用R建立一个语言模型,根据前面的单词预测句子中的下一个单词。目前,我的模型是一个简单的ngram模型,带有Kneser Ney平滑。它通过在训练集中找到具有最大概率(频率)的ngram来预测下一个单词,其中平滑提供了一种内插低阶ngram的方法,这在高阶ngram频率较低且可能无法提供可靠预测的情况下是有利的。虽然这种方法工作得相当好,但在n-gram无法捕获上下文的情况下,它会失败。例如,“外面很暖和,阳光充足,我们去……”和“外面很冷,下雨,我们去……”会给出相同的预测,因为最后一个n

我正在用R建立一个语言模型,根据前面的单词预测句子中的下一个单词。目前,我的模型是一个简单的ngram模型,带有Kneser Ney平滑。它通过在训练集中找到具有最大概率(频率)的ngram来预测下一个单词,其中平滑提供了一种内插低阶ngram的方法,这在高阶ngram频率较低且可能无法提供可靠预测的情况下是有利的。虽然这种方法工作得相当好,但在n-gram无法捕获上下文的情况下,它会失败。例如,“外面很暖和,阳光充足,我们去……”和“外面很冷,下雨,我们去……”会给出相同的预测,因为最后一个n-gram中没有捕捉到天气的背景(假设你的直觉是正确的,单词嵌入向量可以通过合并长距离依赖关系来改进语言模型。你正在寻找的算法叫做RNNLM(递归神经网络语言模型)。

你可以尝试
字符rnn
单词rnn
(谷歌一点)。 对于字符级模型R/mxnet实现,请参阅。可能可以使用text2vec手套嵌入将此代码扩展到字级模型


如果你能成功,请告诉我们(我指的是text2vec或/和mxnet开发人员)。对于R社区来说,我将是一个非常有趣的案例。我想进行这样的模型/实验,但还没有时间进行。

有一个实现的解决方案作为使用单词嵌入的完整示例。事实上,来自Makarenkov等人(2017)的论文具有预先训练(手套)单词嵌入的命名语言模型介绍了使用递归神经网络(RNN)和预先训练的手套单词嵌入逐步训练语言模型的实现

在本文中,作者提供了运行de代码的说明: 1.下载预先训练的手套向量。 2.获取用于训练模型的文本。 3.打开并调整主菜单中的LM_RNN_globet.py文件参数 功能。 4.运行以下方法: (a) 标记化\u文件\u到\u向量(手套\u向量\u文件\u名称、文件\u 2 \u标记化\u名称、, 标记化(文件名) (b) 运行\u实验(标记化的\u文件\u名称)

Python中的代码在这里


我还发现@Dmitriy Selivanov最近发布了一个友好的教程,它使用了text2vec包,可以从R的角度解决这个问题。(如果他能进一步评论,那就太好了)。

你知道RNNLM是否有R实现吗?我猜可能没有。