我正在研究一种算法来预测句子中的下一个单词,比如SwiftKey app。
我认为使用此处描述的N-Grams模型(https://lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf) 它可以做到。
但我想知道是否有任何现有的库可以进行下一个单词预测? (我看过OpenNLP和Stanford CoreNLP,并认为他们没有开箱即用的功能)
或者你可以在java中建议一些高度可扩展的文本预测。
非常感谢你的帮助
答案 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也可能是有趣的。这些并不像开箱即用的那样"但是,只是导入一个库,所以它们可能不是你正在寻找的。 p>