我正在编写一个应用程序,该程序在许多其他库中使用了Stanford CoreNLP库。应用程序接受一个URL,从中提取文本,然后使用CoreNLP处理文本。问题在于,CoreNLP库在注释文本之前需要大量时间将其模型加载到内存中。我正在寻找最好的方法来执行初始化步骤只有一次,并在下一次我想要使用应用程序,我输入一个URL它不会再次加载模型。初始化Java程序并侦听查询
1
A
回答
1
也许你应该尝试在容器内运行你的应用程序 - Servlet Container甚至Web Container像Apache Tomcat?您可以将应用程序打包为simple WAR,然后容器将初始化所有的java类,并假设您公开一个可触发单个URL的NLP处理的servlet,您将节省所有后续NLP处理调用的初始化时间。
编辑:
您不必使用Servlet的。 或者,您可以执行下列操作之一:在您
- 运行WAR一个循环,会读一些配置源URL(数据库或文件),并为每个URL会做NLP和解析(存储结果用于后续分析?)
- 更高级的解决方案可能包括与Quartz联合的现有Java程序,它将每X秒/分钟/小时运行一个NLP +解析器等。更高级的版本将使用带有Spring Batch的Quartz。
祝你好运!在该示例
0
展望从Stanford CoreNLP页,下面是用来注释文本:
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
String text = ... // Add your text here!
Annotation document = new Annotation(text);
pipeline.annotate(document);
因此,您可以创建一个对象,并解析,当应用程序被初始化虚拟文本。您会忽略该操作的结果,因为其目的是在加载应用程序时加载所需的模块。在此之后,您可以保留“管道”对象并在需要时参考其他注释操作。
相关问题
- 1. TextToSpeech初始化侦听器触发,但TTS引擎未初始化
- 2. 在初始化Angular应用程序后立即注册事件侦听器
- 3. 从查询初始化DbSet?
- 4. Android ListView在就绪或初始化侦听器上
- 5. Jtables(Array常量初始化程序)java
- 6. java中的初始化初始化
- 7. Python程序的初始化
- 8. ::初始化程序(NameError)
- 9. 静态初始化的Java序列化
- 10. 初始化在Java
- 11. Java T初始化
- 12. Java初始化块
- 13. java servlets初始化并销毁
- 14. 正在初始化,并在Java中
- 15. Ctor初始化程序:自初始化会导致崩溃?
- 16. 通过初始化程序列表初始化QList
- 17. 在初始化程序列表中初始化unordered_map
- 18. 使用超类初始化程序初始化一个类
- 19. 错误信息:未初始化::初始化程序:: MEMCACHE
- 20. 从初始化程序列表初始化,但没有{{{{{{{{...}}}}}}}}?
- 21. 初始化MultipleChoiceField与查询集
- 22. 对象初始化器逗号查询
- 23. 全局变量初始化查询
- 24. 查询类的侦听器的状态
- 25. Spring JMS侦听器容器侦听器安装程序超时
- 26. Swift 2中的指定初始化程序和便捷初始化程序
- 27. 如何知道哪个初始化程序是指定的初始化程序?
- 28. 在Java中初始化的顺序
- 29. Java:对象的初始化顺序
- 30. 在Java中初始化的顺序
得到一个有用的答案,你应该解释一下你如何启动应用程序 - 没有使用的API自己,这很难说,但可以保留一个JVM在内存初始化运行库,并重新 - 每次以某种方式使用相同的JVM – ianpojman 2012-04-24 20:53:25
我要求最好的方式来做到这一点,我需要的是应用程序将采取一个URL并尽快处理它,并等待其他网址(结果将存储在一个数据库)。 – madmed 2012-04-24 22:33:36