Sorry I have used wrong constructor for DefaultTextSpan previously. So ended up with error.
Thank you so much Sean detailed reply. On Mon, Jan 16, 2017 at 12:25 AM, Finan, Sean < sean.fi...@childrens.harvard.edu> wrote: > Hi Vighnesh, > > > I Have changed JCasUtil.select .... > a -> new DefaultTextSpan(a, 0) > should not be changed. The DefaultTextSpan in core.cc.pretty.textspan > should be used as it has the overlaps(..) convenience method. That and the > similar class in lookup2 should be merged at some point ... > The constructor you are using: > /** > * @param annotation - > * @param sentenceOffset begin span offset of the containing sentence > */ > public DefaultTextSpan( final AnnotationFS annotation, final int > sentenceOffset ) { > this( annotation.getBegin() - sentenceOffset, annotation.getEnd() - > sentenceOffset ); > } > > > I could not make out what needs to be added in place of BaseToken ... > TextSpan ts = new DefaultTextSpan( BaseToken, 0 ); > should be > TextSpan ts = new DefaultTextSpan( bt, 0 ); > > My apologies if you spent a lot of time debugging - I try to get the > details into these emails but don't really have time to write and run > everything myself. It might help people on the devlist (or other forums) > to state a little about your development experience / background if you > need help. > > I hope that this fixes everything, > Sean > > > > > > -----Original Message----- > From: Sparsh K [mailto:sparsh...@gmail.com] > Sent: Sunday, January 15, 2017 12:26 PM > To: dev@ctakes.apache.org > Cc: dev-...@ctakes.apache.org > Subject: Re: Question on ctakes > > Hi Sean, > > I tried to use your solution, > > I got few compilation errors , I few fixed few. > > I Have changed JCasUtil.select( jcas, IdentifiedAnnotation.class > ).stream().map( a -> new DefaultTextSpan(a, 0) ) > > to JCasUtil.select( jcas, IdentifiedAnnotation.class ).stream().map( a -> > new DefaultTextSpan(*a.getBegin()*, 0) ) hope this is correct. > > > I could not make out what needs to be added in place of BaseToken in > below case. > > TextSpan ts = new DefaultTextSpan( BaseToken, 0 ); > > > Thanks & Regards > Vighnesh > > > > > On Thu, Jan 12, 2017 at 10:12 PM, Sparsh K <sparsh...@gmail.com> wrote: > > > Thanks for clarification sean. > > > > On Thu, Jan 12, 2017 at 8:43 PM, Finan, Sean < > > sean.fi...@childrens.harvard.edu> wrote: > > > >> Hi Vighnesh, > >> > >> 1. Does ctakes depend upon exact word match? > >> By default, yet. The fast clinical pipeline uses > >> "DefaultJCasTermAnnotator" or some such horribly named class. There > >> is also an "OverlapJCasTermAnnotator". Equally horrible name, > >> slightly different functionality. Given: "Blood, urine test" the > >> Default will identify "blood", "urine" and "urine test". The overlap > >> will identify "Blood", "urine", "urine test" and "blood test". > >> Obviously this requires all four terms to be in the dictionary. > >> > >> 2. How to get all nouns in a document not covered by an > >> IdentifiedAnnotation? > >> > >> JCasUtil.select( jcas, BaseToken.class ).stream().filter( b -> > >> b.getPartOfSpeech().equals("NN") ).map( Annotation::getCoveredText() > >> ).forEach( System.out::println ); > >> > >> Something like that should work. Filtering by discovered > >> IdentifiedAnnotations is another step. Something like: > >> > >> Collection<TextSpan> identifiedSpans = JCasUtil.select( jcas, > >> IdentifiedAnnotation.class ).stream().map( a -> new > >> DefaultTextSpan(a, 0) ).collect( Collectors.toList() ); > >> > >> Predicate<BaseToken> overlapped = bt -> { > >> TextSpan ts = new DefaultTextSpan( BaseToken, 0 ); > >> return identifiedSpans.stream().filter( s -> s.overlaps(ts) > >> ).findAny().exists(); } > >> > >> Then add .filter( !overlapped ) before the original .map( > >> Annotation::getCoveredText ). I am not debugging this email, so you > >> may need to check my stream methods. > >> > >> Sean > >> > >> > >> -----Original Message----- > >> From: Sparsh K [mailto:sparsh...@gmail.com] > >> Sent: Thursday, January 12, 2017 7:31 AM > >> To: dev-...@ctakes.apache.org; dev@ctakes.apache.org > >> Subject: Question on ctakes > >> > >> Hi > >> > >> I am new to ctakes, I have got few questions, Please guide me with > >> your inputs. > >> > >> 1. When a clinical note is inputted to ctakes, it will process that > >> text in multi stages. > >> Let us take an eg of a clinical note :- SINGLE/PRETERM (35 WEEKS 5 > >> DAYS)/MALE/AGA. > >> > >> Here the word "preterm" is not in dictionary, preterm infant, > >> premature baby etc is there. So ctakes is not identifying that word as > coveredText. > >> > >> My question is does ctakes processing mainly depends on exact word > >> match with the dictionary. If so If i give one page of clinical note > >> with explanation of disease and if it does not contain exact matching > >> words with dictionary, then ctakes will not identify that word. Is it > true? > >> > >> 2. Ctakes does POS tagging and does named entity recognition on the > >> noun terms. How to pull out a list of nouns created which are not > >> matched to a named disorder code at the named entity recognition level. > >> > >> > >> Regards > >> Vighnesh > >> > > > > >