Я недавно узнал о UIMA (http://uima.apache.org/) Это выглядит многообещающе для простых задач NLP, таких как токенизация, расщепление предложений, тегингинг в рече и т. Д.
Мне удалось получить в свои руки уже настроенный минимальный образец Java, который использует компоненты OpenNLP для своего трубопровода.
Код выглядит так:
public void ApplyPipeline() throws IOException, InvalidXMLException,
ResourceInitializationException, AnalysisEngineProcessException {
XMLInputSource in = new XMLInputSource(
"opennlp/OpenNlpTextAnalyzer.xml");
ResourceSpecifier specifier = UIMAFramework.getXMLParser()
.parseResourceSpecifier(in);
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
JCas jcas = ae.newJCas();
jcas.setDocumentText("This is my text.");
ae.process(jcas);
this.doSomethingWithResults(jcas);
jcas.reset();
ae.destroy();
}
private void doSomethingWithResults(JCas jcas) {
AnnotationIndex<Annotation> idx = jcas.getAnnotationIndex();
FSIterator<Annotation> it = idx.iterator();
while (it.hasNext()) {
System.out.println(it.next().toString());
}
}
Выдержка из OpenNlpTextAnalyzer.xml:
<delegateAnalysisEngine key="SentenceDetector">
<import location="SentenceDetector.xml" />
</delegateAnalysisEngine>
<delegateAnalysisEngine key="Tokenizer">
<import location="Tokenizer.xml" />
</delegateAnalysisEngine>
Код Java производит выход, как это:
Token
sofa: _InitialView
begin: 426
end: 435
pos: "NNP"
Я пытаюсь получить одну и ту же информацию от каждого объекта аннотации, который использует метод ToString (). Я уже изучил исходный код UIMA, чтобы понять, откуда поступают значения. Мои попытки извлечь их в жизнь, но они в любом случае не умны.
Я изо всех сил пытаюсь найти простые примеры, которые извлекают информацию из объектов JCAS.
Я ищу способ получить, например, все аннотации, производящие мой почтовый ящик или предложения для дальнейшего использования.
Наверное
List<Feature> feats = it.next().getType().getFeatures();
является началом получать значения, но из -за UIMA принадлежит классы для примитивных типов, даже исходный код метода ToString в классе аннотации читается как пощечины на лице.
Где я могу найти код Java, который использует базовые материалы UIMA и где хорошие уроки (кроме Javadoc из самой структуры)?