Philip Ogren wrote:
Is there any simple way to ask for the token 3 to the left of my
current token? I can't find anything that is built into the default
annotation index, and so I have defined an index for this in the
descriptor file. In order to do this I define a feature in my token
type that keeps track of the index of each token and create an FSIndex
on that feature. I can then use the FSIndex as follows:
FSIndex fsIndex =
jCas.getFSIndexRepository().getIndex("my.token.place.index");
MyToken targetAnnotation = new MyToken(jCas);
targetAnnotation.setIndex(targetIndex); //target index is the
index of the token I want to find
return fsIndex.find(targetAnnotation);
Does this make sense? It works - but I just want to make sure that I am
not creating extra work for myself. I actually have several types that
I want to be able to access this way and so I've created a super-type
that has the 'index' feature. This allows me to create a set of utility
methods that I can use for retrieving e.g. tokens, sentences,
constituents, etc. at a specific index or relative to other annotations
of the same type. The only challenge is making sure I retrieve (and
manage) the appropriate index when one of these methods is called.
Any advice here is appreciated.
Thanks,
Philip
This approach is fine, if you need that kind of functionality. I've
seen it used elsewhere.
--Thilo