3

最近、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() メソッドが使用する各 Annotation オブジェクトから同じ情報を取得しようとしています。値がどこから来ているのかを理解するために、UIMA のソース コードを調べました。それらを取り戻そうとする私の試みはうまくいきますが、決して賢くはありません。

JCas オブジェクトから情報を抽出する簡単な例を見つけるのに苦労しています。

たとえば、PosTagger または SentenceSplitter によって生成されるすべての Annotations を取得して、さらに使用する方法を探しています。

私は推測する

List<Feature> feats = it.next().getType().getFeatures();

値を取得するための開始ですが、UIMA はプリミティブ型のクラスを所有しているため、注釈クラスの toString メソッドのソース コードでさえ平手打ちのように読み取れます。

基本的な UIMA を使用する Java コードはどこにありますか? また、優れたチュートリアル (フレームワーク自体の javadoc を除く) はどこにありますか?

4

1 に答える 1

7

注釈型の JCas ラッパー クラスを生成します (これは、UIMA に付属する Eclipse 用の型システム エディター UIMA プラグインを使用して実行できます)。これにより、アノテーションにアクセスするために使用できる Java クラスが提供されます。これらは機能のゲッターとセッターを提供します。

JCasから注釈を取得するための便利なメソッドを含む、より便利な API を提供するuimaFITを確認する必要があります。 )。

DKPro Coreページには、いくつかのクイックスタートGroovy スクリプトと UIMA コンポーネントのコレクションがあります。

UIMA@GSCL 2013 チュートリアルの資料 (スライドとサンプル コード) が参考になるかもしれません。ここに行き、「チュートリアル」までスクロールします。

開示: 私は UIMA、uimaFIT、DKPro Core の開発者であり、UIMA@GSCL 2013 ワークショップの共同主催者です。

于 2013-11-07T18:12:22.890 に答える