我正在开发一个使用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 中?
提前致谢!!!