최근에 UIMA에 대해 알게되었습니다.http://uima.apache.org/). 토큰 화, 문장 분할, 부품 태그 등과 같은 간단한 NLP 작업에 유망한 것으로 보입니다.
파이프 라인에 OpenNLP 구성 요소를 사용하는 이미 구성된 최소 Java 샘플을 손에 넣었습니다.
코드는 다음과 같습니다.
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 메소드의 소스 코드조차도 얼굴의 때리는 것처럼 읽습니다.
기본 UIMA 물건을 사용하는 Java 코드는 어디에서 찾을 수 있으며 좋은 튜토리얼 (프레임 워크 자체의 Javadoc 제외)은 어디에 있습니까?