You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ctakes.apache.org by Mansour Al Akeel <ma...@gmail.com> on 2014/11/28 15:45:55 UTC

Initializing and using clinical pipleline from java

I am using the following code to test initialization for the clinical
annotator from a junit test case:


    AnalysisEngineDescription description =
UmlsDictionaryLookupAnnotator.createAnnotatorDescription();

    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(description);

    URL testFile = this.getClass().getResource("/clinical-text-1.txt");

    byte[] encoded = Files.readAllBytes(Paths.get(testFile.toURI()));

    String encoding = "UTF-8";

    String textContent = new String(encoded, encoding);

    JCas jcas = ae.newJCas();

    jcas.setDocumentText(textContent);

    long start = System.currentTimeMillis();
    ae.process(jcas);
    long end = System.currentTimeMillis();

    System.out.println("processing done in : " + ((end - start) / 1000.0));

    XmlCasSerializer.serialize(jcas.getCas(), System.out);

    jcas.reset();


The output is produced, however, there's no annotations added, and no
error or exception is thrown.

Am I missing something here??

Thank you.

Re: Initializing and using clinical pipleline from java

Posted by britt fitch <br...@wiredinformatics.com>.
Hi Mansour, it looks like you are lacking required mvn dependencies. 

1.) are you able to cd to the ctakes directory and execute ‘mvn clean package’ from the command line?


 	 	 	 
Britt Fitch
Wired Informatics
265 Franklin St Ste 1702
Boston, MA 02110
http://wiredinformatics.com
Britt.Fitch@wiredinformatics.com

On Dec 4, 2014, at 10:01 AM, Mansour Al Akeel <ma...@gmail.com> wrote:

> Britt,
> Thank you again for your time.
> 
> On Wed, Dec 3, 2014 at 12:31 PM, britt fitch <br...@wiredinformatics.com> wrote:
> Hi Mansour, 
> 
> 1.) Are you executing this from an IDE (i.e. Eclipse, etc..)
> Yes, I am running this from eclipse IDE and through JUNIT.
>  
> 2.) Can you confirm what version of cTAKES you are running?
> cTAKES 3.2.0
>  
> 3.) Can you verify that you have the following in your .m2 directory: ~.m2/repository/org/cleartk/cleartk-ml-liblinear/2.0.0/cleartk-ml-liblinear-2.0.0.jar ?
> 
>  No, it does not exist in the local repo.
> 
> 4.) Can you describe how you are running this method? (i.e. from a class within a ctakes module or a class from your own personal project)
> 
> Currently, this is only a junit method that I run it through eclipse, and debug it. Once it works, I will need to move it to its own class that will be initialized by spring. 
> 
>  
> Cheers, 
> 
> Britt
> 
> 
>  	 	 	 
> Britt Fitch
> Wired Informatics
> 265 Franklin St Ste 1702
> Boston, MA 02110
> http://wiredinformatics.com
> Britt.Fitch@wiredinformatics.com
> 
> On Dec 3, 2014, at 8:17 AM, Mansour Al Akeel <ma...@gmail.com> wrote:
> 
>> Britt,
>> 
>> I didn't try the pom.xml you attached. However, I am using this code to initialize the Engine, and getting another error:
>> 
>> 
>> 
>>     private static AnalysisEngineDescription createAnnotatorDescription() throws ResourceInitializationException
>>     {
>> 
>>     AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
>>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new String[] { "NP", "NP" }, 1));
>>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new String[] { "NP", "PP", "NP" }, 2));
>>     AnalysisEngineDescription chunkAdjusterAnnotator = chunkAdjusterBuilder.createAggregateDescription();
>> 
>>     URL lvgPropertiesURL = LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
>>     File propertiesFile = new File(lvgPropertiesURL.toString());
>> 
>>     AnalysisEngineDescription lvgAnalysisEngineDescription = AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
>>         LvgAnnotator.PARAM_USE_CMD_CACHE, false, LvgAnnotator.PARAM_USE_LEMMA_CACHE, false, LvgAnnotator.PARAM_USE_SEGMENTS, false,
>>         LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20, LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
>>         LvgAnnotator.PARAM_POST_LEMMAS, false, LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
>>         ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class, propertiesFile));
>> 
>>     AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
>>     tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
>>     tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
>>     tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
>> //    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
>>     tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
>>     tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
>>     tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
>>     tokenizerPipeLine.add(chunkAdjusterAnnotator);
>> 
>>     AggregateBuilder clinicalBuilder = new AggregateBuilder();
>>     clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
>>     clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
>>     clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
>>     clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
>>     clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
>>     clinicalBuilder.add(MyPolarityCleartkAnalysisEngine.createAnnotatorDescription());
>>     return clinicalBuilder.createAggregateDescription();
>> 
>>     }
>> 
>> 
>> 
>> Please note that I commentted out the LVG part. The error is: 
>> 
>> org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class "org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine" failed.  (Descriptor: <unknown>)
>>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:265)
>>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:170)
>>     at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>>     at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>>     at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>>     at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>>     at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>>     at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>>     at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>>     at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>>     at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
>>     ...
>>     
>> Caused by: java.lang.RuntimeException: ClassifierBuilder class read from manifest does not exist
>>     at org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:107)
>>     at org.cleartk.classifier.jar.GenericJarClassifierFactory.createClassifier(GenericJarClassifierFactory.java:71)
>>     at org.cleartk.classifier.jar.JarClassifierFactory.createClassifier(JarClassifierFactory.java:35)
>>     at org.cleartk.classifier.CleartkAnnotator.initialize(CleartkAnnotator.java:139)
>>     at org.apache.ctakes.assertion.medfacts.cleartk.AssertionCleartkAnalysisEngine.initialize(AssertionCleartkAnalysisEngine.java:189)
>>     at org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine.initialize(PolarityCleartkAnalysisEngine.java:53)
>>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:263)
>>     ... 37 more
>> Caused by: java.lang.ClassNotFoundException: org.cleartk.classifier.liblinear.LIBLINEARStringOutcomeClassifierBuilder
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>     at java.security.AccessController.doPrivileged(Native Method)
>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>>     at java.lang.Class.forName0(Native Method)
>>     at java.lang.Class.forName(Class.java:188)
>>     at org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:105)
>>     ... 43 more
>> 
>> 
>> 
>> 
>> Thank you.
>> 
> 
> 


Re: Initializing and using clinical pipleline from java

Posted by Mansour Al Akeel <ma...@gmail.com>.
Britt,
Thank you again for your time.

On Wed, Dec 3, 2014 at 12:31 PM, britt fitch <
britt.fitch@wiredinformatics.com> wrote:

> Hi Mansour,
>
> 1.) Are you executing this from an IDE (i.e. Eclipse, etc..)
>
Yes, I am running this from eclipse IDE and through JUNIT.


> 2.) Can you confirm what version of cTAKES you are running?
>
cTAKES 3.2.0


> 3.) Can you verify that you have the following in your .m2 directory:
> ~.m2/repository/org/cleartk/cleartk-ml-liblinear/2.0.0/cleartk-ml-liblinear-2.0.0.jar
> ?
>

 No, it does not exist in the local repo.

4.) Can you describe how you are running this method? (i.e. from a class
> within a ctakes module or a class from your own personal project)
>
> Currently, this is only a junit method that I run it through eclipse, and
debug it. Once it works, I will need to move it to its own class that will
be initialized by spring.



> Cheers,
>
> Britt
>
>
>     Britt Fitch
> Wired Informatics
> 265 Franklin St Ste 1702
> Boston, MA 02110
> http://wiredinformatics.com
> Britt.Fitch@wiredinformatics.com
>
> On Dec 3, 2014, at 8:17 AM, Mansour Al Akeel <ma...@gmail.com>
> wrote:
>
> Britt,
>
> I didn't try the pom.xml you attached. However, I am using this code to
> initialize the Engine, and getting another error:
>
>
>
>     private static AnalysisEngineDescription createAnnotatorDescription()
> throws ResourceInitializationException
>     {
>
>     AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
> String[] { "NP", "NP" }, 1));
>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
> String[] { "NP", "PP", "NP" }, 2));
>     AnalysisEngineDescription chunkAdjusterAnnotator =
> chunkAdjusterBuilder.createAggregateDescription();
>
>     URL lvgPropertiesURL =
> LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
>     File propertiesFile = new File(lvgPropertiesURL.toString());
>
>     AnalysisEngineDescription lvgAnalysisEngineDescription =
> AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
>         LvgAnnotator.PARAM_USE_CMD_CACHE, false,
> LvgAnnotator.PARAM_USE_LEMMA_CACHE, false, LvgAnnotator.PARAM_USE_SEGMENTS,
> false,
>         LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20,
> LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
>         LvgAnnotator.PARAM_POST_LEMMAS, false,
> LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
>
> ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class,
> propertiesFile));
>
>     AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
>
> tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
>     tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
>
> tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
> //    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
>
> tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
>     tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
>     tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
>     tokenizerPipeLine.add(chunkAdjusterAnnotator);
>
>     AggregateBuilder clinicalBuilder = new AggregateBuilder();
>     clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
>
> clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
>
> clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
>
> clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
>
> clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
>
> clinicalBuilder.add(MyPolarityCleartkAnalysisEngine.createAnnotatorDescription());
>     return clinicalBuilder.createAggregateDescription();
>
>     }
>
>
>
> Please note that I commentted out the LVG part. The error is:
>
> org.apache.uima.resource.ResourceInitializationException: Initialization
> of annotator class
> "org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine"
> failed.  (Descriptor: <unknown>)
>     at
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:265)
>     at
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:170)
>     at
> org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>     at
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>     at
> org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>     at
> org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>     at
> org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>     at
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>     at
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>     at
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>     at
> org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>     at
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>     at
> org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>     at
> org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
>     ...
>
> Caused by: java.lang.RuntimeException: ClassifierBuilder class read from
> manifest does not exist
>     at
> org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:107)
>     at
> org.cleartk.classifier.jar.GenericJarClassifierFactory.createClassifier(GenericJarClassifierFactory.java:71)
>     at
> org.cleartk.classifier.jar.JarClassifierFactory.createClassifier(JarClassifierFactory.java:35)
>     at
> org.cleartk.classifier.CleartkAnnotator.initialize(CleartkAnnotator.java:139)
>     at
> org.apache.ctakes.assertion.medfacts.cleartk.AssertionCleartkAnalysisEngine.initialize(AssertionCleartkAnalysisEngine.java:189)
>     at
> org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine.initialize(PolarityCleartkAnalysisEngine.java:53)
>     at
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:263)
>     ... 37 more
> Caused by: java.lang.ClassNotFoundException:
> org.cleartk.classifier.liblinear.LIBLINEARStringOutcomeClassifierBuilder
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:188)
>     at
> org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:105)
>     ... 43 more
>
>
>
>
> Thank you.
>
>
>

Re: Initializing and using clinical pipleline from java

Posted by britt fitch <br...@wiredinformatics.com>.
Hi Mansour, 

1.) Are you executing this from an IDE (i.e. Eclipse, etc..)
2.) Can you confirm what version of cTAKES you are running?
3.) Can you verify that you have the following in your .m2 directory: ~.m2/repository/org/cleartk/cleartk-ml-liblinear/2.0.0/cleartk-ml-liblinear-2.0.0.jar ?
4.) Can you describe how you are running this method? (i.e. from a class within a ctakes module or a class from your own personal project)

Cheers, 

Britt


 	 	 	 
Britt Fitch
Wired Informatics
265 Franklin St Ste 1702
Boston, MA 02110
http://wiredinformatics.com
Britt.Fitch@wiredinformatics.com

On Dec 3, 2014, at 8:17 AM, Mansour Al Akeel <ma...@gmail.com> wrote:

> Britt,
> 
> I didn't try the pom.xml you attached. However, I am using this code to initialize the Engine, and getting another error:
> 
> 
> 
>     private static AnalysisEngineDescription createAnnotatorDescription() throws ResourceInitializationException
>     {
> 
>     AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new String[] { "NP", "NP" }, 1));
>     chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new String[] { "NP", "PP", "NP" }, 2));
>     AnalysisEngineDescription chunkAdjusterAnnotator = chunkAdjusterBuilder.createAggregateDescription();
> 
>     URL lvgPropertiesURL = LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
>     File propertiesFile = new File(lvgPropertiesURL.toString());
> 
>     AnalysisEngineDescription lvgAnalysisEngineDescription = AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
>         LvgAnnotator.PARAM_USE_CMD_CACHE, false, LvgAnnotator.PARAM_USE_LEMMA_CACHE, false, LvgAnnotator.PARAM_USE_SEGMENTS, false,
>         LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20, LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
>         LvgAnnotator.PARAM_POST_LEMMAS, false, LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
>         ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class, propertiesFile));
> 
>     AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
>     tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
>     tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
>     tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
> //    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
>     tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
>     tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
>     tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
>     tokenizerPipeLine.add(chunkAdjusterAnnotator);
> 
>     AggregateBuilder clinicalBuilder = new AggregateBuilder();
>     clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
>     clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
>     clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
>     clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
>     clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
>     clinicalBuilder.add(MyPolarityCleartkAnalysisEngine.createAnnotatorDescription());
>     return clinicalBuilder.createAggregateDescription();
> 
>     }
> 
> 
> 
> Please note that I commentted out the LVG part. The error is: 
> 
> org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class "org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine" failed.  (Descriptor: <unknown>)
>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:265)
>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:170)
>     at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>     at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>     at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>     at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>     at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>     at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>     at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>     at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>     at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>     at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
>     ...
>     
> Caused by: java.lang.RuntimeException: ClassifierBuilder class read from manifest does not exist
>     at org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:107)
>     at org.cleartk.classifier.jar.GenericJarClassifierFactory.createClassifier(GenericJarClassifierFactory.java:71)
>     at org.cleartk.classifier.jar.JarClassifierFactory.createClassifier(JarClassifierFactory.java:35)
>     at org.cleartk.classifier.CleartkAnnotator.initialize(CleartkAnnotator.java:139)
>     at org.apache.ctakes.assertion.medfacts.cleartk.AssertionCleartkAnalysisEngine.initialize(AssertionCleartkAnalysisEngine.java:189)
>     at org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine.initialize(PolarityCleartkAnalysisEngine.java:53)
>     at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:263)
>     ... 37 more
> Caused by: java.lang.ClassNotFoundException: org.cleartk.classifier.liblinear.LIBLINEARStringOutcomeClassifierBuilder
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:188)
>     at org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:105)
>     ... 43 more
> 
> 
> 
> 
> Thank you.
> 


Re: Initializing and using clinical pipleline from java

Posted by Mansour Al Akeel <ma...@gmail.com>.
Britt,

I didn't try the pom.xml you attached. However, I am using this code to
initialize the Engine, and getting another error:



    private static AnalysisEngineDescription createAnnotatorDescription()
throws ResourceInitializationException
    {

    AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
String[] { "NP", "NP" }, 1));
    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
String[] { "NP", "PP", "NP" }, 2));
    AnalysisEngineDescription chunkAdjusterAnnotator =
chunkAdjusterBuilder.createAggregateDescription();

    URL lvgPropertiesURL =
LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
    File propertiesFile = new File(lvgPropertiesURL.toString());

    AnalysisEngineDescription lvgAnalysisEngineDescription =
AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
        LvgAnnotator.PARAM_USE_CMD_CACHE, false,
LvgAnnotator.PARAM_USE_LEMMA_CACHE, false, LvgAnnotator.PARAM_USE_SEGMENTS,
false,
        LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20,
LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
        LvgAnnotator.PARAM_POST_LEMMAS, false,
LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,

ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class,
propertiesFile));

    AggregateBuilder tokenizerPipeLine = new AggregateBuilder();

tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
    tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());

tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
//    tokenizerPipeLine.add(lvgAnalysisEngineDescription);

tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
    tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
    tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
    tokenizerPipeLine.add(chunkAdjusterAnnotator);

    AggregateBuilder clinicalBuilder = new AggregateBuilder();
    clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());

clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));

clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));

clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());

clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());

clinicalBuilder.add(MyPolarityCleartkAnalysisEngine.createAnnotatorDescription());
    return clinicalBuilder.createAggregateDescription();

    }



Please note that I commentted out the LVG part. The error is:

org.apache.uima.resource.ResourceInitializationException: Initialization of
annotator class
"org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine"
failed.  (Descriptor: <unknown>)
    at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:265)
    at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:170)
    at
org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at
org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
    at
org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
    at
org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
    at
org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
    at
org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
    at
org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
    at
org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at
org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
    at
org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
    ...

Caused by: java.lang.RuntimeException: ClassifierBuilder class read from
manifest does not exist
    at
org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:107)
    at
org.cleartk.classifier.jar.GenericJarClassifierFactory.createClassifier(GenericJarClassifierFactory.java:71)
    at
org.cleartk.classifier.jar.JarClassifierFactory.createClassifier(JarClassifierFactory.java:35)
    at
org.cleartk.classifier.CleartkAnnotator.initialize(CleartkAnnotator.java:139)
    at
org.apache.ctakes.assertion.medfacts.cleartk.AssertionCleartkAnalysisEngine.initialize(AssertionCleartkAnalysisEngine.java:189)
    at
org.apache.ctakes.assertion.medfacts.cleartk.PolarityCleartkAnalysisEngine.initialize(PolarityCleartkAnalysisEngine.java:53)
    at
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:263)
    ... 37 more
Caused by: java.lang.ClassNotFoundException:
org.cleartk.classifier.liblinear.LIBLINEARStringOutcomeClassifierBuilder
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at
org.cleartk.classifier.jar.JarClassifierBuilder.fromManifest(JarClassifierBuilder.java:105)
    ... 43 more




Thank you.

Re: Initializing and using clinical pipleline from java

Posted by britt fitch <br...@wiredinformatics.com>.
Hi Mansour, 
One other option is you can use the attached pom.xml which essentially downloads and unpacks the full LVG (~350MB) on your behalf.



Cheers,

Britt


 	 	 	 
Britt Fitch
Wired Informatics
265 Franklin St Ste 1702
Boston, MA 02110
http://wiredinformatics.com
Britt.Fitch@wiredinformatics.com

On Dec 1, 2014, at 11:02 AM, britt fitch <br...@wiredinformatics.com> wrote:

> Hi Mansour,
> I am assuming you are trying to run this in a local development environment such as Eclipse IDE or similar?
> I had a closer look at ctakes-lvg-res/pom.xml, it looks like it tries to unpack a dummy lvg dictionary anyway. 
> That probably isn't very useful for you; might as well just comment out the optional lvg component from your pipeline.
> 
> Cheers, 
> 
> Britt
> 
>  	 	 	 
> Britt Fitch
> Wired Informatics
> 265 Franklin St Ste 1702
> Boston, MA 02110
> http://wiredinformatics.com
> Britt.Fitch@wiredinformatics.com
> 
> On Nov 29, 2014, at 10:54 AM, Mansour Al Akeel <ma...@gmail.com> wrote:
> 
>> I solved this but got another error. I created the pipeline manually,
>> and used the File constuctory File(URL.toString()) instead of
>> File(URI):
>> 
>> 
>>    private static AnalysisEngineDescription
>> createAnnotatorDescription() throws ResourceInitializationException
>>    {
>> 
>>    AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
>>    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
>> String[] { "NP", "NP" }, 1));
>>    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
>> String[] { "NP", "PP", "NP" }, 2));
>>    AnalysisEngineDescription chunkAdjusterAnnotator =
>> chunkAdjusterBuilder.createAggregateDescription();
>> 
>>    URL lvgPropertiesURL =
>> LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
>>    File propertiesFile = new File(lvgPropertiesURL.toString());
>> 
>>    AnalysisEngineDescription lvgAnalysisEngineDescription =
>> AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
>>        LvgAnnotator.PARAM_USE_CMD_CACHE, false,
>> LvgAnnotator.PARAM_USE_LEMMA_CACHE, false,
>> LvgAnnotator.PARAM_USE_SEGMENTS, false,
>>        LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20,
>> LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
>>        LvgAnnotator.PARAM_POST_LEMMAS, false,
>> LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
>>        ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class,
>> propertiesFile));
>> 
>>    AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
>>    tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
>>    tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
>>    tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
>>    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
>>    tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
>>    tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
>>    tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
>>    tokenizerPipeLine.add(chunkAdjusterAnnotator);
>> 
>>    AggregateBuilder clinicalBuilder = new AggregateBuilder();
>>    clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
>>    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
>>    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
>>    clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
>>    clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
>>    clinicalBuilder.add(PolarityCleartkAnalysisEngine.createAnnotatorDescription());
>>    return clinicalBuilder.createAggregateDescription();
>> 
>>    }
>> 
>> 
>> The error is still in intializing the lvgAnalysisEngineDescription:
>> 
>> java.lang.NullPointerException
>>    at gov.nih.nlm.nls.lvg.Lib.Configuration.SetConfiguration(Configuration.java:105)
>>    at gov.nih.nlm.nls.lvg.Lib.Configuration.<init>(Configuration.java:34)
>>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.InitConfigVars(LvgCmdApi.java:1506)
>>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.Init(LvgCmdApi.java:1428)
>>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.<init>(LvgCmdApi.java:86)
>>    at org.apache.ctakes.lvg.resource.LvgCmdApiResourceImpl.load(LvgCmdApiResourceImpl.java:89)
>>    at org.apache.uima.resource.impl.ResourceManager_impl.registerResource(ResourceManager_impl.java:620)
>>    at org.apache.uima.resource.impl.ResourceManager_impl.initializeExternalResources(ResourceManager_impl.java:456)
>>    at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:193)
>>    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
>>    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:131)
>>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>>    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>>    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
>> ....
>> 
>> 
>> 
>> On the console, I get this err message:
>> 
>> ** Configuration Error:
>> /home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties
>> (No such file or directory)
>> ** Error: problem of opening/reading config file:
>> '/home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties'.
>> Use -x option to specify the config file path.
>> 
>> 
>> 
>> 
>> I am not sure why it's adding the
>> "/home/mansour/workspace/test/diagnosis/" to the URL
>> "jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties"!
>> 
>> 
>> Any advice ?
>> Thank you.
> 


Re: Initializing and using clinical pipleline from java

Posted by britt fitch <br...@wiredinformatics.com>.
Hi Mansour,
I am assuming you are trying to run this in a local development environment such as Eclipse IDE or similar?
I had a closer look at ctakes-lvg-res/pom.xml, it looks like it tries to unpack a dummy lvg dictionary anyway. 
That probably isn't very useful for you; might as well just comment out the optional lvg component from your pipeline.

Cheers, 

Britt

 	 	 	 
Britt Fitch
Wired Informatics
265 Franklin St Ste 1702
Boston, MA 02110
http://wiredinformatics.com
Britt.Fitch@wiredinformatics.com

On Nov 29, 2014, at 10:54 AM, Mansour Al Akeel <ma...@gmail.com> wrote:

> I solved this but got another error. I created the pipeline manually,
> and used the File constuctory File(URL.toString()) instead of
> File(URI):
> 
> 
>    private static AnalysisEngineDescription
> createAnnotatorDescription() throws ResourceInitializationException
>    {
> 
>    AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
>    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
> String[] { "NP", "NP" }, 1));
>    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
> String[] { "NP", "PP", "NP" }, 2));
>    AnalysisEngineDescription chunkAdjusterAnnotator =
> chunkAdjusterBuilder.createAggregateDescription();
> 
>    URL lvgPropertiesURL =
> LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
>    File propertiesFile = new File(lvgPropertiesURL.toString());
> 
>    AnalysisEngineDescription lvgAnalysisEngineDescription =
> AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
>        LvgAnnotator.PARAM_USE_CMD_CACHE, false,
> LvgAnnotator.PARAM_USE_LEMMA_CACHE, false,
> LvgAnnotator.PARAM_USE_SEGMENTS, false,
>        LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20,
> LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
>        LvgAnnotator.PARAM_POST_LEMMAS, false,
> LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
>        ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class,
> propertiesFile));
> 
>    AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
>    tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
>    tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
>    tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
>    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
>    tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
>    tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
>    tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
>    tokenizerPipeLine.add(chunkAdjusterAnnotator);
> 
>    AggregateBuilder clinicalBuilder = new AggregateBuilder();
>    clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
>    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
>    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
>    clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
>    clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
>    clinicalBuilder.add(PolarityCleartkAnalysisEngine.createAnnotatorDescription());
>    return clinicalBuilder.createAggregateDescription();
> 
>    }
> 
> 
> The error is still in intializing the lvgAnalysisEngineDescription:
> 
> java.lang.NullPointerException
>    at gov.nih.nlm.nls.lvg.Lib.Configuration.SetConfiguration(Configuration.java:105)
>    at gov.nih.nlm.nls.lvg.Lib.Configuration.<init>(Configuration.java:34)
>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.InitConfigVars(LvgCmdApi.java:1506)
>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.Init(LvgCmdApi.java:1428)
>    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.<init>(LvgCmdApi.java:86)
>    at org.apache.ctakes.lvg.resource.LvgCmdApiResourceImpl.load(LvgCmdApiResourceImpl.java:89)
>    at org.apache.uima.resource.impl.ResourceManager_impl.registerResource(ResourceManager_impl.java:620)
>    at org.apache.uima.resource.impl.ResourceManager_impl.initializeExternalResources(ResourceManager_impl.java:456)
>    at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:193)
>    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
>    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:131)
>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
>    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
>    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
>    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
>    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
> ....
> 
> 
> 
> On the console, I get this err message:
> 
> ** Configuration Error:
> /home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties
> (No such file or directory)
> ** Error: problem of opening/reading config file:
> '/home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties'.
> Use -x option to specify the config file path.
> 
> 
> 
> 
> I am not sure why it's adding the
> "/home/mansour/workspace/test/diagnosis/" to the URL
> "jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties"!
> 
> 
> Any advice ?
> Thank you.


Re: Initializing and using clinical pipleline from java

Posted by Mansour Al Akeel <ma...@gmail.com>.
I solved this but got another error. I created the pipeline manually,
and used the File constuctory File(URL.toString()) instead of
File(URI):


    private static AnalysisEngineDescription
createAnnotatorDescription() throws ResourceInitializationException
    {

    AggregateBuilder chunkAdjusterBuilder = new AggregateBuilder();
    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
String[] { "NP", "NP" }, 1));
    chunkAdjusterBuilder.add(ChunkAdjuster.createAnnotatorDescription(new
String[] { "NP", "PP", "NP" }, 2));
    AnalysisEngineDescription chunkAdjusterAnnotator =
chunkAdjusterBuilder.createAggregateDescription();

    URL lvgPropertiesURL =
LvgCmdApiResourceImpl.class.getResource("/org/apache/ctakes/lvg/data/config/lvg.properties");
    File propertiesFile = new File(lvgPropertiesURL.toString());

    AnalysisEngineDescription lvgAnalysisEngineDescription =
AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
        LvgAnnotator.PARAM_USE_CMD_CACHE, false,
LvgAnnotator.PARAM_USE_LEMMA_CACHE, false,
LvgAnnotator.PARAM_USE_SEGMENTS, false,
        LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF, 20,
LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF, 20,
        LvgAnnotator.PARAM_POST_LEMMAS, false,
LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
        ExternalResourceFactory.createExternalResourceDescription(LvgCmdApiResourceImpl.class,
propertiesFile));

    AggregateBuilder tokenizerPipeLine = new AggregateBuilder();
    tokenizerPipeLine.add(SimpleSegmentAnnotator.createAnnotatorDescription());
    tokenizerPipeLine.add(SentenceDetector.createAnnotatorDescription());
    tokenizerPipeLine.add(TokenizerAnnotatorPTB.createAnnotatorDescription());
    tokenizerPipeLine.add(lvgAnalysisEngineDescription);
    tokenizerPipeLine.add(ContextDependentTokenizerAnnotator.createAnnotatorDescription());
    tokenizerPipeLine.add(POSTagger.createAnnotatorDescription());
    tokenizerPipeLine.add(Chunker.createAnnotatorDescription());
    tokenizerPipeLine.add(chunkAdjusterAnnotator);

    AggregateBuilder clinicalBuilder = new AggregateBuilder();
    clinicalBuilder.add(tokenizerPipeLine.createAggregateDescription());
    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(CopyNPChunksToLookupWindowAnnotations.class));
    clinicalBuilder.add(AnalysisEngineFactory.createPrimitiveDescription(RemoveEnclosedLookupWindows.class));
    clinicalBuilder.add(UmlsDictionaryLookupAnnotator.createAnnotatorDescription());
    clinicalBuilder.add(ClearNLPDependencyParserAE.createAnnotatorDescription());
    clinicalBuilder.add(PolarityCleartkAnalysisEngine.createAnnotatorDescription());
    return clinicalBuilder.createAggregateDescription();

    }


The error is still in intializing the lvgAnalysisEngineDescription:

java.lang.NullPointerException
    at gov.nih.nlm.nls.lvg.Lib.Configuration.SetConfiguration(Configuration.java:105)
    at gov.nih.nlm.nls.lvg.Lib.Configuration.<init>(Configuration.java:34)
    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.InitConfigVars(LvgCmdApi.java:1506)
    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.Init(LvgCmdApi.java:1428)
    at gov.nih.nlm.nls.lvg.Api.LvgCmdApi.<init>(LvgCmdApi.java:86)
    at org.apache.ctakes.lvg.resource.LvgCmdApiResourceImpl.load(LvgCmdApiResourceImpl.java:89)
    at org.apache.uima.resource.impl.ResourceManager_impl.registerResource(ResourceManager_impl.java:620)
    at org.apache.uima.resource.impl.ResourceManager_impl.initializeExternalResources(ResourceManager_impl.java:456)
    at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:193)
    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:131)
    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:430)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:374)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:187)
    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:371)
....



On the console, I get this err message:

** Configuration Error:
/home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties
(No such file or directory)
** Error: problem of opening/reading config file:
'/home/mansour/workspace/test/diagnosis/jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties'.
Use -x option to specify the config file path.




I am not sure why it's adding the
"/home/mansour/workspace/test/diagnosis/" to the URL
"jar:file:/home/mansour/.m2/repository/org/apache/ctakes/ctakes-lvg-res/3.2.0/ctakes-lvg-res-3.2.0.jar!/org/apache/ctakes/lvg/data/config/lvg.properties"!


Any advice ?
Thank you.

Re: Initializing and using clinical pipleline from java

Posted by Mansour Al Akeel <ma...@gmail.com>.
James,
Thank you for your time. I tried to instantiate the descriptor using:

    AnalysisEngineDescription ced =
ClinicalPipelineFactory.getDefaultPipeline();


but getting an exception:


java.lang.IllegalArgumentException: URI is not hierarchical
    at java.io.File.<init>(File.java:392)
    at org.apache.ctakes.lvg.ae.LvgAnnotator.createAnnotatorDescription(LvgAnnotator.java:565)
    at org.apache.ctakes.clinicalpipeline.ClinicalPipelineFactory.getTokenProcessingPipeline(ClinicalPipelineFactory.java:78)
    at org.apache.ctakes.clinicalpipeline.ClinicalPipelineFactory.getDefaultPipeline(ClinicalPipelineFactory.java:58)
    .....



The exact location for this is in the LvgAnnotator class:

    public static AnalysisEngineDescription
createAnnotatorDescription() throws ResourceInitializationException {
      try {
      return AnalysisEngineFactory.createPrimitiveDescription(LvgAnnotator.class,
          LvgAnnotator.PARAM_USE_CMD_CACHE,
          false,
          LvgAnnotator.PARAM_USE_LEMMA_CACHE,
          false,
          LvgAnnotator.PARAM_USE_SEGMENTS,
          false,
          LvgAnnotator.PARAM_LEMMA_CACHE_FREQUENCY_CUTOFF,
          20,
          LvgAnnotator.PARAM_LEMMA_FREQ_CUTOFF,
          20,
          LvgAnnotator.PARAM_POST_LEMMAS,
          false,
          LvgAnnotator.PARAM_LVGCMDAPI_RESRC_KEY,
          ExternalResourceFactory.createExternalResourceDescription(
              LvgCmdApiResourceImpl.class,
              new File(LvgCmdApiResourceImpl.class.getResource(
                  "/org/apache/ctakes/lvg/data/config/lvg.properties").toURI()))
          );
    } catch (URISyntaxException e) {
      throw new ResourceInitializationException(e);
    }
    }


>From the javadoc for java.io.File:
==========================================
public boolean isOpaque()

Tells whether or not this URI is opaque.

A URI is opaque if, and only if, it is absolute and its
scheme-specific part does not begin with a slash character ('/'). An
opaque URI has a scheme, a scheme-specific part, and possibly a
fragment; all other components are undefined.

Returns:true if, and only if, this URI is opaque
========================================

I am somewhat lost because  in the LvgAnnotator we are passing
"/org/apache/ctakes/lvg/data/config/lvg.properties", and it is suppose
to work fine.
However from JUnit it's throwing the above exception because the path
starts with slash.


any idea ??


On Fri, Nov 28, 2014 at 10:56 AM, Masanz, James J.
<Ma...@mayo.edu> wrote:
>
> The dictionary lookup annotator requires other annotators be run first.
>
> see
> https://svn.apache.org/repos/asf/ctakes/trunk/ctakes-clinical-pipeline/src/main/java/org/apache/ctakes/clinicalpipeline/ClinicalPipelineFactory.java
>
> -- James Masanz
>
> ________________________________________
> From: Mansour Al Akeel [mansour.alakeel@gmail.com]
> Sent: Friday, November 28, 2014 8:45 AM
> To: user
> Subject: Initializing and using clinical pipleline from java
>
> I am using the following code to test initialization for the clinical
> annotator from a junit test case:
>
>
>     AnalysisEngineDescription description =
> UmlsDictionaryLookupAnnotator.createAnnotatorDescription();
>
>     AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(description);
>
>     URL testFile = this.getClass().getResource("/clinical-text-1.txt");
>
>     byte[] encoded = Files.readAllBytes(Paths.get(testFile.toURI()));
>
>     String encoding = "UTF-8";
>
>     String textContent = new String(encoded, encoding);
>
>     JCas jcas = ae.newJCas();
>
>     jcas.setDocumentText(textContent);
>
>     long start = System.currentTimeMillis();
>     ae.process(jcas);
>     long end = System.currentTimeMillis();
>
>     System.out.println("processing done in : " + ((end - start) / 1000.0));
>
>     XmlCasSerializer.serialize(jcas.getCas(), System.out);
>
>     jcas.reset();
>
>
> The output is produced, however, there's no annotations added, and no
> error or exception is thrown.
>
> Am I missing something here??
>
> Thank you.

RE: Initializing and using clinical pipleline from java

Posted by "Masanz, James J." <Ma...@mayo.edu>.
The dictionary lookup annotator requires other annotators be run first.

see
https://svn.apache.org/repos/asf/ctakes/trunk/ctakes-clinical-pipeline/src/main/java/org/apache/ctakes/clinicalpipeline/ClinicalPipelineFactory.java

-- James Masanz

________________________________________
From: Mansour Al Akeel [mansour.alakeel@gmail.com]
Sent: Friday, November 28, 2014 8:45 AM
To: user
Subject: Initializing and using clinical pipleline from java

I am using the following code to test initialization for the clinical
annotator from a junit test case:


    AnalysisEngineDescription description =
UmlsDictionaryLookupAnnotator.createAnnotatorDescription();

    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(description);

    URL testFile = this.getClass().getResource("/clinical-text-1.txt");

    byte[] encoded = Files.readAllBytes(Paths.get(testFile.toURI()));

    String encoding = "UTF-8";

    String textContent = new String(encoded, encoding);

    JCas jcas = ae.newJCas();

    jcas.setDocumentText(textContent);

    long start = System.currentTimeMillis();
    ae.process(jcas);
    long end = System.currentTimeMillis();

    System.out.println("processing done in : " + ((end - start) / 1000.0));

    XmlCasSerializer.serialize(jcas.getCas(), System.out);

    jcas.reset();


The output is produced, however, there's no annotations added, and no
error or exception is thrown.

Am I missing something here??

Thank you.