2016-06-12 2 views

Répondre

2

Les données du canapé dans le CAS ne peuvent être définies qu'une seule fois. Il ne peut pas être modifié après son réglage.

Pour réutiliser un CAS, appelez la méthode reset(). Cela efface toutes les annotations et vous permet de régler à nouveau le canapé/texte.

Pour construire un CAS de manière incrémentielle, une stratégie courante consiste à ajouter des annotations au système CAS tout en ajoutant du texte à un tampon de chaîne et en ne définissant le texte qu'à la fin du processus.

exemple à base uimaFIT Un pourrait ressembler à ceci:

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(); 

Divulgation: Je travaille sur le projet Apache UIMA.

+0

Bénéficiez-vous toujours des avantages de performance de ne pas avoir à recharger tous les modèles, etc. (l'adresse est la question référencée) de cette façon? – zode64

+0

Si vous instanciez des composants réels en utilisant par ex. les moteurs uimaFIT 'AnalysisEngine = AnalysisEngineFactory.createEngine (...)', alors typiquement les modèles/ressources ne sont chargés qu'une seule fois (à l'instanciation ou sur le premier document traité). Traiter les CAS en utilisant 'engine.process (cas); – rec