0
This questions介紹如何重用管道在dkpro但如果我只創建一個JCAS,然後嘗試更改的文本,然後我得到的異常更改文本DKPro
org.apache.uima.cas.CASRuntimeException: Data for Sofa feature setLocalSofaData() has already been set.
我如何解決這個問題?
This questions介紹如何重用管道在dkpro但如果我只創建一個JCAS,然後嘗試更改的文本,然後我得到的異常更改文本DKPro
org.apache.uima.cas.CASRuntimeException: Data for Sofa feature setLocalSofaData() has already been set.
我如何解決這個問題?
CAS中的沙發數據只能設置一次。它已被設置後無法修改。
爲了重新使用CAS,請調用其上的reset()
方法。這將清除所有註釋,並允許您再次設置沙發/文字。
要增量構建CAS,常用策略是向CAS添加註釋,同時向字符串緩衝區添加文本並僅在過程結束時設置文本。
基於uimaFIT-一個例子可能是這個樣子:
Strings[] texts = {
"Hello world.",
"This is a test." };
// Create empty CAS/JCas initialized using uimaFIT typesystem auto-detection
JCas jcas = JCasFactory.createJCas();
// Instantiate some analysis engine
AnalysisEngine engine = AnalysisEngineFactory.createEngine(...);
// Process texts re-using the previously created CAS/JCas instance
for (String t : texts) {
jcas.reset();
jcas.setDocumentText(t);
jcas.setDocumentLanguage("en");
engine.process(jcas);
}
engine.collectionProcessComplete();
engine.destroy();
披露:我工作的Apache UIMA項目。
您是否仍然通過這種方式獲得性能優勢,無需重新加載所有模型等(地址是引用的問題)? – zode64
如果您使用例如實例化實際組件uimaFIT'AnalysisEngine引擎= AnalysisEngineFactory.createEngine(...)'調用,那麼典型的模型/資源只加載一次(在實例化或第一個處理過的文檔上)。使用'engine.process(cas);'處理CASes。 – rec