It seems that when training the the OpenNLP named entity recognition, it only uses a stream (arrays) of literal tokens without any additional features.
Is there a way to provide additional features for each token in order to take parts of speech and pre-existing named entities (of other types) into consideration?
Yes, there is a way to do that.
See this: opennlp documentation
just add your feature generator class (which should extend AdaptiveFeatureGenerator class).
In my experience, adding such generator will make the system painfully slow and doesn't improve the performance much.
Thank you.