像Java中的文本预测(下一个单词预测)一样的Swiftkey

时间:2015-12-31 08:37:37

标签: java text machine-learning nlp prediction

我正在研究一种算法来预测句子中的下一个单词,比如SwiftKey app。

我认为使用此处描述的N-Grams模型(https://lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf) 它可以做到。

但我想知道是否有任何现有的库可以进行下一个单词预测? (我看过OpenNLP和Stanford CoreNLP,并认为他们没有开箱即用的功能)

或者你可以在java中建议一些高度可扩展的文本预测。

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

取决于您的意思"高度可扩展",一种模式语言的方法是使用循环神经网络。为了训练这样的神经网络,你基本上将一系列单词传递给网络,并在每个单词中预测下一个单词。 http://colah.github.io/posts/2015-08-Understanding-LSTMs/是开始阅读LSTM的好地方,https://www.tensorflow.org/versions/master/tutorials/recurrent/index.html#lstm是一个包含工作代码和代码工作原理解释的教程。它在使用张量流的python中,但我指出这一点的一个原因是,你可以至少看看准确性是否足以满足你的需求。训练需要一段时间,但模型训练时的预测不会那么慢。

在java中,http://deeplearning4j.org/recurrentnetwork.html讨论了循环神经网络和lstms,但是你可能需要做一些工作来设置它。 http://deeplearning4j.org/word2vec.html#just也可能是有趣的。这些并不像开箱即用的那样"但是,只是导入一个库,所以它们可能不是你正在寻找的。