لقد اكتشفت مؤخرًا عن 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 من الإطار نفسه)؟