ctakes-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Finan, Sean" <Sean.Fi...@childrens.harvard.edu>
Subject RE: jcas work with a list of schemas
Date Mon, 06 Feb 2017 17:57:36 GMT
Hi Alaa,

Have a look at the OntologyConceptUtil class in ctakes-core.  You can use the getCodes(..)
method to obtain the codes for a scheme.

For all codes of all annotations:
Collection<String> allCodes = OntologyConceptUtil.getCodes( jcas, schemeName );

For all codes of all annotations in a window (paragraph, segment, sentence):
Collection<String> windowCodes = OntologyConceptUtil.getCodes( jcas, windowAnnotation,
schemeName );

For all codes in a single annotation:
Collection<String> annotationCodes = OntologyConceptUtil.getCodes( annotation, schemeName
);

For all codes in multiple annotations:
Collection<String> annotationsCodes = OntologyConceptUtil.getCodes( annotations, schemeName
);

If you want a map of scheme names and codes:
Map<String,Collection<String>> getSchemeCodes( jcas );
Map<String,Collection<String>> getSchemeCodes( jcas, window );
... getSchemeCodes( annotation );
... getSchemeCodes( annotations );


If you have some other need, like getting all annotations with codes of a certain scheme,
let me know.
Sean



-----Original Message-----
From: Alaa al Barari [mailto:alaa.albarari@gmail.com] 
Sent: Monday, February 06, 2017 4:30 AM
To: dev@ctakes.apache.org
Subject: jcas work with a list of schemas

Hi,

I have my own dictionary and it has a lot of schemas which takes a lot of time. please see
code below, how to make it work with specific list of schemas instead of all of them

                                jcas = pipeline.newJCas(); jcas.setDocumentText(sentence.getCoveredText());
pipeline.process(jcas);
String previousEntity = "";
for ( IdentifiedAnnotation entity : JCasUtil.select( jcas, IdentifiedAnnotation.class ) )
{

final FSArray fsArray = entity.getOntologyConceptArr(); if ( fsArray == null ) { continue;
} String entityString = entity.getCoveredText(); System.out.println( "Entity: " + entity.getCoveredText()
+ " === Polarity: " + entity.getPolarity() " === Subject: " + 
+ entity.getSubject() " === History? " + (entity.getHistoryOf() ==
CONST.NE_HISTORY_OF_PRESENT));

final FeatureStructure[] featureStructures = fsArray.toArray();
final Collection<String> entityCodes = new ArrayList<>(
featureStructures.length );
previousEntity = entityString;
for ( FeatureStructure featureStructure : featureStructures ) {
if ( featureStructure instanceof UmlsConcept ) {
final UmlsConcept umlsConcept = (UmlsConcept)featureStructure;
String entityCode = umlsConcept.getCode();
String entityScheme = umlsConcept.getCodingScheme();
String description = umlsConcept.getCodeDescription();
if (entityCode == null || entityScheme == null) {
continue;
}
if (schemes.contains(entityScheme) || schemes.contains("all")) {
System.out.println(entityScheme + "_" + entityCode + "_" + description);
}
}
}

}
}


Regards.
-- 
Eng Alaa Al-Barari
phone 0599297470
Mime
View raw message