0

我正在开发一个使用Apache UIMA框架来注释文档的项目。由于我必须将所有文档传递一次并在一个 for-lopp 中处理它们,因此我必须临时存储(复制)当前文档的当前 CAS 对象,以免被跟踪 FS 和堆值弄乱。

因此,我使用 CasCopier 首先复制当前的 CAS 并显示,然后再处理下一个文档。

 1.  public class DocumentAnalysis {
 2.    public DocumentAnalysis(CAS cas) {
 3.        this.cas = cas;
 4.    }
 5.     
 6.    public processDocuments(Document documents) {
 7.        for(Document document: documents) {
 8.            // process each document, after this method, the cas has all values
 9.            processSingleDoc(document);
10.
11.            // create a new CAS as the destination of copy
12.            CAS localCas = CASFactory.createCas().getCas();
13. 
14.            // copy the current CAS to the new CAS
15.            CASCopier.copyCas(this.cas, localCas, true);  
16.        }
17.    }
18.
19.    public processSingleDoc(Document document) {
20.        // the logic for processing
21.        // implement UIMA process() method
22.        ......
23.    }
24.
25.    CAS cas;
26.  }

但是,问题在于它在第 12 行抛出了 NullPointerException,我认为 getCAS() 方法需要 indexRepository 变量,而我创建的 localCas 没有该值,这意味着新 CAS 的创建可能不正确。

我在网上搜索过,还没有找到任何解决方案。那么有谁知道我如何将当前的 CAS 复制到新创建的 CAS 中?

提前致谢!!!

4

0 回答 0