作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 StanfordNLP 对与给定主题相关的文本 block 进行共指解析,并且在尝试加载 StanfordCoreNLP 模型时,它首先在加载模型时完全耗尽了内存,但现在仍然是加载需要 15 分钟以上。
我有这样的代码:
public Map<Integer, CorefChain> getCoreferences(String text) {
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Annotation document = new Annotation(text);
pipeline.annotate(document);
return document.get(CorefCoreAnnotations.CorefChainAnnotation.class);
}
这是设计上不可避免的吗?在超过 10 秒的任何时间都不能接受的生产应用程序中,甚至可以像这样进行共指解析吗?
最佳答案
是的,如果你不实例化 StanfordCoreNLP 会快得多在你的方法里面。将其存储为类变量。
更具体地说,将以下内容移到您的方法之外:
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
希望对您有所帮助! ;)
关于java - 在 Java 中加载 StanfordOpenNLP 模型的巨大开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194606/
我是一名优秀的程序员,十分优秀!