我正在 R 中构建一个语言模型,以根据前面的单词预测句子中的下一个单词。目前我的模型是一个简单的 ngram 模型,带有 Kneser-Ney 平滑。它通过在训练集中找到具有最大概率(频率)的 ngram 来预测下一个单词,其中平滑提供了一种插入低阶 ngram 的方法,这在高阶 ngram 具有低频率并且可能无法提供可靠预测的情况下可能是有利的. 虽然这种方法工作得相当好,但在 n-gram 无法捕获上下文的情况下它会失败。例如,“外面很暖和,阳光明媚,我们去...”和“外面很冷,正在下雨,我们去...”将提出相同的预测,因为没有捕获天气的上下文在最后一个 n-gram 中(假设 n<5)。
我正在研究更高级的方法,我发现了 text2vec包,它允许将单词映射到向量空间,其中具有相似含义的单词用相似(接近)向量表示。我有一种感觉,这种表示可能有助于下一个单词的预测,但我无法弄清楚如何准确地定义训练任务。我的问题是 text2vec 是否是用于下一个单词预测的正确工具,如果是,那么可用于此任务的合适预测算法是什么?