gpt4 book ai didi

java - 斯坦福 LexParser 多线程

转载 作者:行者123 更新时间:2023-12-02 03:59:10 30 4
gpt4 key购买 nike

我最近在使用Stanford Lexparser。不幸的是,我遇到了一个问题,因为它需要很长时间,特别是当我传递一个大文件时。多线程有助于提高性能吗?我知道多线程可以在命令行中轻松完成。但是,我想在内部使用 API 对其进行多线程处理。目前,我正在使用这段代码。我如何使其成为多线程?

for (List<HasWord> sentence : new DocumentPreprocessor(fileReader)) {
parse = lp.apply(sentence);
TreePrint tp = new TreePrint("typedDependenciesCollapsed");
tp.printTree(parse, pw);
}

最佳答案

您可以使用常规的旧 Java 线程来并行注释文档。例如:

Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,parse");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

Annotation ann = new Annotation("your sentence here");
for (int i = 0; i < 100; ++i) {
new Thread() {
@Override public void run() {
pipeline.annotate(ann); // except, you should probably annotate different documents.
Tree tree = ann.get(SentencesAnnotation.class).get(0).get(TreeAnnotation.class);
}
}.start();
}

另一个选项是使用simple API :

for (int i = 0; i < 100; ++i) {
new Thread() {
@Override public void run() {
Tree tree = new Sentence("your sentence").parse();
}
}.start();
}

但在较高的层面上,您不太可能从多线程中获得惊人的巨大加速。解析通常很慢(O(n^3) wrt 句子长度)并且多线程只能为您提供核心数量的最大线性加速。使事情变得更快的另一种方法是使用 the shift reduce parser ,或者,如果您可以接受依赖性而不是选区解析,则 Stanford Neural Dependency Parser .

关于java - 斯坦福 LexParser 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089104/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com