我正在制作一款可以进行自然语言处理的Android应用。应用程序本身工作正常,除了模型OpenNLP给出的大,所以apk太大,无法分发。我该怎么做才能让apk更小?我正在考虑使用服务器来执行NLP,但我不知道如何去做它
答案 0 :(得分:0)
将NLP功能移动到服务器将使应用程序无法用于离线使用,这可能是许多用户眼中的缺点。如果你决定走这条路,我推荐一个名为Converting a Functional API to REST的教程,它描述了在REST API中包装Java类API(在你的情况下是一个OpenNLP类型,如POSTagger
)的过程
另一种选择是训练您自己的模型(例如参见OpenNLP文档中的Sentence Detector Training部分)。然后,您可以减小训练集的大小,使得生成的模型适合您的apk。
显然,我不建议编制自己的训练数据,因为这需要付出很多努力。也许你可以找到用于offical OpenNLP models的训练数据,然后简单地减少训练集的大小。询问OpenNLP mailing lists之一的问题可能是找到官方培训数据的良好起点。
另一种选择可能是通过将官方OpenNLP模型加载到Java程序中并以某种方式从中删除数据来修改它们。除非您了解OpenNLP工具背后的算法和数据结构,否则我不建议使用此路由,因此可以判断这是否可行。