java - 我正在制作 NLP 应用程序,但模型太大

标签 java android nlp apk opennlp

我正在制作一个进行一些自然语言处理的 Android 应用程序。该应用程序本身运行良好,只是 OpenNLP 提供的模型很大,因此 apk 太大而无法分发。我应该怎么做才能让apk变小?我正在考虑使用服务器来进行 NLP,但我不知道如何去做

最佳答案

将 NLP 功能移至服务器将使应用程序无法离线使用,这在许多用户看来可能是一个缺点。如果您仍然决定走这条路,我推荐一个名为 Converting a Functional API to REST 的教程。它描述了将 Java 类的 API(在您的例子中是 OpenNLP 类型,例如 POSTagger )包装在 REST API 中的过程。

另一个选择是训练您自己的模型(例如,请参阅 OpenNLP 文档中的 Sentence Detector Training 部分)。然后,您可以减小训练集的大小,以便生成的模型适合您的 apk。

显然我不建议编译自己的训练数据,因为这会花费很多精力。也许你可以找到 offical OpenNLP models 使用的训练数据然后简单地减少训练集的大小。向 OpenNLP mailing lists 之一提问可能是查找官方训练数据的一个很好的起点。

另一种选择可能是通过将官方 OpenNLP 模型加载到 Java 程序中并以某种方式删除其中的数据来修改它们。我不建议您走这条路,除非您了解 OpenNLP 工具底层的算法和数据结构,从而可以判断这是否可行。

关于java - 我正在制作 NLP 应用程序,但模型太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37228670/

相关文章:

java - jsp中的表单发布,contentType header没有字符集,为什么?

java - Maven:创建一个执行我的java文件的jar,而不是包含它们

android - 单击特定位置的 ImageView

python - 为 OOV 词添加新向量的正确方法

architecture - 以编程方式检测任何 html 页面上社交事件的名称、位置和开始时间

java - 为 maven-compiler-plugin 设置默认的 jdk

java.lang.IllegalArgumentException : Failed to find configured root that contains/storage/emulated/0/Pictures/异常

java - 大字符串导致的 OutOfMemoryException

Android EditText AddTextChangeListener 货币格式

python - 删除 python 中 TFIDF 结果的同义词