初始化Java程序并侦听查询
我正在编写一个应用程序,它使用了斯坦福大学的CoreNLP库和许多其他库。应用程序获取URL,从中提取文本,然后使用CoreNLP处理文本。问题是CoreNLP库在注释文本之前需要花费大量时间将其模型加载到内存中。我正在寻找一种最好的方法来完成一次初始化步骤,下一次当我想使用应用程序时,我输入一个URL,它不会再次加载模型。也许你应该尝试在容器中运行你的应用程序,或者类似的?您可以将应用程序打包为一个URL,然后容器将初始化所有java类一次,并且假设您公开一个servlet,该servlet将触发单个URL的NLP处理,那么您将为所有后续NLP处理调用节省初始化时间 编辑: 您不必使用servlet。 或者,您可以执行以下操作之一:初始化Java程序并侦听查询,java,stanford-nlp,Java,Stanford Nlp,我正在编写一个应用程序,它使用了斯坦福大学的CoreNLP库和许多其他库。应用程序获取URL,从中提取文本,然后使用CoreNLP处理文本。问题是CoreNLP库在注释文本之前需要花费大量时间将其模型加载到内存中。我正在寻找一种最好的方法来完成一次初始化步骤,下一次当我想使用应用程序时,我输入一个URL,它不会再次加载模型。也许你应该尝试在容器中运行你的应用程序,或者类似的?您可以将应用程序打包为一个URL,然后容器将初始化所有java类一次,并且假设您公开一个servlet,该servlet将
祝你好运 也许你应该试着在容器中运行你的应用程序——或者像这样?您可以将应用程序打包为一个URL,然后容器将初始化所有java类一次,并且假设您公开一个servlet,该servlet将触发单个URL的NLP处理,那么您将为所有后续NLP处理调用节省初始化时间 编辑: 您不必使用servlet。 或者,您可以执行以下操作之一:
祝你好运 从他们的页面查看示例,以下内容用于注释文本:
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);
因此,您可以在应用程序初始化时创建一个对象并解析一个伪文本。您忽略操作的结果,因为其目的是在加载应用程序时加载所需的模块。之后,您可以保留“pipeline”对象,并在需要时引用它以进行其他注释操作。查看页面中的示例,以下内容用于注释文本:
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);
因此,您可以在应用程序初始化时创建一个对象并解析一个伪文本。您忽略操作的结果,因为其目的是在加载应用程序时加载所需的模块。之后,您可以保留“pipeline”对象,并在需要时引用它以进行其他注释操作。要获得有用的答案,您应该详细解释如何启动应用程序-很难说我自己没有使用该API,但您可以让JVM在内存中运行初始化的库,每次都要重复使用同一个JVM。我想知道最好的方法。我需要的是,应用程序将获取一个URL并尽快处理它,然后等待其他URL(结果将存储在数据库中)。要得到有用的答案,你应该更多地解释你是如何启动这个应用程序的——很难说我自己没有使用这个API,但是你可以让JVM在内存中运行初始化的库,每次都要重复使用同一个JVM我想问的是最好的方法我所需要的就是应用程序将获取一个URL并尽快处理它,然后等待其他URL(结果将存储在数据库中)。好的,我有同样的想法,但是有没有一种方法可以在没有servlet的情况下完成同样的事情?谢谢你的回答,你知道我是如何代替计划观看一个文件的更改(即,当我向文件添加一个新的URL时,程序将使用添加的URL运行)@madmed,你可以在这里检查一些代码好的,我有同样的想法,但是有没有一种方法可以在没有servlet的情况下做同样的事情?谢谢你的回答,你知道我是如何监视一个文件的更改(即,当我向该文件添加一个新的URL时,程序将使用添加的URL运行)而不是安排时间吗@madmed,你可以在这里检查一些代码