Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
apache__uima-uimaj_CVE-2022-32287_3-3-0 — 注釈、型システム、モジュール式分析エンジンを用いて非構造化テキストデータを処理・拡張する分析パイプラインを構築するためのJava SDK。 | Kitploit
ツール/GitHubGitHub/shoucheng3/apache__uima-uimaj_cve-2022-32287_3-3-0
汎用ユーティリティコード分析スクリプトと自動化ユーティリティとフレームワーク機械学習学習と教育
GitHubshoucheng3/apache__uima-uimaj_cve-2022-32287_3-3-0

apache__uima-uimaj_CVE-2022-32287_3-3-0

注釈、型システム、モジュール式分析エンジンを用いて非構造化テキストデータを処理・拡張する分析パイプラインを構築するためのJava SDK。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
リポジトリを見る
41年前未レビュー
共有

Apache UIMA Java SDK へようこそ

Apache UIMA は、有用な情報で豊かにされた非構造化データ(テキストなど)の管理を支援します。例えば、テキスト内のエンティティの言及を特定したり、そのエンティティを参照データセットにリンクしたりしたい場合、Apache UIMA は以下を提供します。

  • そのデータを表現するための便利なデータ構造 -- Common Analysis Structure (CAS)
  • CAS に格納される豊かなデータのスキーマとして機能する型システム概念サービス
  • そのデータを処理するための、リーダー、分析エンジン(プロセッサ)、コンシューマ(ライター)からなるコンポーネントモデル
  • 複数の分析エンジンをパイプラインに集約し、(オプションで並列化して)実行するためのモデル
  • CAS をさまざまな形式に(デ)シリアライズするためのさまざまなオプション
  • その他にも多くの追加機能があります!

なお、Apache UIMA Java SDK は分析機能を構築するためのフレームワークのみを提供し、分析機能そのものは提供しません。ただし、Apache UIMA 上に構築され、分析コンポーネントのコレクションや既製のソリューションを提供するさまざまなサードパーティが存在します。

システム要件

Apache UIMA v3.6.0 以降では、Java バージョン 17 以降が必要です。

UIMA 用の Eclipse プラグインツールを実行するには、Java 17 以降を使用して Eclipse 4.25 (2022-09) 以降を起動する必要があります。

クラスファイルに対して移行ツールを実行するには、Java JRE ではなく Java JDK で実行する必要があります。

サポートされているプラットフォームは、Windows、Linux、macOS です。他の Java プラットフォーム実装でも動作するはずですが、十分にテストされていません。

/bin ディレクトリ内のスクリプトの多くは Java を呼び出します。これらは環境変数 JAVA_HOME の値を使用して使用する Java を特定します。設定されていない場合は、PATH 変数に適切な Java があることを期待して java を呼び出します。

Apache UIMA Java SDK の使用

Apache UIMA Java SDK は、Maven Central からインポートすることで、ほとんどのビルドツールで簡単にプロジェクトに追加できます。例えば、Maven を使用する場合、次の依存関係をプロジェクトに追加できます。

root@kitploit:~
<dependency>
  <groupId>org.apache.uima</groupId>
  <artifactId>uimaj-core</artifactId>
  <version>3.6.0</version>
</dependency>

次に、Apache UIMA Java SDK と Apache uimaFIT ライブラリの使用方法の簡単な例をいくつか示します。Apache uimaFIT は、追加できる別の依存関係です。

root@kitploit:~
<dependency>
  <groupId>org.apache.uima</groupId>
  <artifactId>uimafit-core</artifactId>
  <version>3.6.0</version>
</dependency>
型システムの作成

型システムは、非構造化情報(ここではテキストドキュメント)に添付したい情報のタイプを定義します。この例では、エンティティの言及を特定したいので、エンティティが属するカテゴリを格納するために使用できるフィーチャー category を持つ型 my.Entity を定義します。

UIMA がアノテーションスキーマについて内部的に維持する情報を説明するために、生成されたスキーマを XML として画面に出力します。

root@kitploit:~
String TYPE_NAME_ENTITY = "my.Entity";
String TYPE_NAME_TOKEN = "my.Token";
String FEAT_NAME_CATEGORY = "category";

var tsd = UIMAFramework.getResourceSpecifierFactory().createTypeSystemDescription();
tsd.addType(TYPE_NAME_TOKEN, "", CAS.TYPE_NAME_ANNOTATION);
var entityTypeDesc = tsd.addType(TYPE_NAME_ENTITY, "", CAS.TYPE_NAME_ANNOTATION);
entityTypeDesc.addFeature(FEAT_NAME_CATEGORY, "", CAS.TYPE_NAME_STRING);

tsd.toXML(System.out);
Common Analysis Structure オブジェクトの作成

次に、分析したいテキストを格納する Common Analysis Structure (CAS) オブジェクトを作成します。

繰り返しになりますが、UIMA が CAS オブジェクトに内部的に格納する情報を説明するために、オブジェクトの XML 表現を画面に出力します。

root@kitploit:~
var cas = CasFactory.createCas(tsd);
cas.setDocumentText("Welcome to Apache UIMA.");
cas.setDocumentLanguage("en");

CasIOUtils.save(cas, System.out, SerialFormat.XMI_PRETTY);
アノテーションの追加と取得

次に、型 my.Entity のアノテーションを作成して、サンプルテキスト内の Apache UIMA の言及を特定します。

最後に、CAS 内のすべてのアノテーションを反復処理して画面に表示します。これには、UIMA によって常に作成されるデフォルトの DocumentAnnotation と、私たちが作成した my.Entity アノテーションの両方が含まれます。

root@kitploit:~
var entityType = cas.getTypeSystem().getType(TYPE_NAME_ENTITY);
var entity = cas.createAnnotation(entityType, 11, 22);
cas.addFsToIndexes(entity);

for (var anno : cas.<Annotation>select(entityType)) {
   System.out.printf("%s: [%s]%n", anno.getType().getName(), anno.getCoveredText());
}
分析コンポーネントの操作

異なるタイプの分析をステップに整理するために、通常それらを個々の分析エンジンにパッケージ化します。ここでは、そのようなコンポーネントを構築する方法と、それらを分析パイプラインとして実行する方法を示します。

root@kitploit:~
class TokenAnnotator extends CasAnnotator_ImplBase {
  public void process(CAS cas) throws AnalysisEngineProcessException {
    var tokenType = cas.getTypeSystem().getType(TYPE_NAME_TOKEN);
    var bi = BreakIterator.getWordInstance();
    bi.setText(cas.getDocumentText());
    int begin = bi.first();
    int end;
    for (end = bi.next(); end != BreakIterator.DONE; end = bi.next()) {
      var token = cas.createAnnotation(tokenType, begin, end);
      cas.addFsToIndexes(token);
      begin = end;
    }
  }
}

class EntityAnnotator extends CasAnnotator_ImplBase {
  public void process(CAS cas) throws AnalysisEngineProcessException {
    var tokenType = cas.getTypeSystem().getType(TYPE_NAME_TOKEN);
    var entityType = cas.getTypeSystem().getType(TYPE_NAME_ENTITY);
    for (var token : cas.<Annotation>select(tokenType)) {
      if (Character.isUpperCase(token.getCoveredText().charAt(0))) {
        var entity = cas.createAnnotation(entityType, token.getBegin(), token.getEnd());
        cas.addFsToIndexes(entity);
      }
    }
  }
}

cas = CasFactory.createCas(tsd);
cas.setDocumentText("John likes Apache UIMA.");
cas.setDocumentLanguage("en");

var pipeline = AnalysisEngineFactory.createEngineDescription(
  AnalysisEngineFactory.createEngineDescription(TokenAnnotator.class),
  AnalysisEngineFactory.createEngineDescription(EntityAnnotator.class));

SimplePipeline.runPipeline(cas, pipeline);

for (var anno : cas.<Annotation>select(entityType)) {
   System.out.printf("%s: [%s]%n", anno.getType().getName(), anno.getCoveredText());
}

uimaFIT の使用

UIMA コンポーネントの設定は、一般に、実行時にコンポーネントをどのようにインスタンス化してデプロイするかをフレームワークに指示する XML 記述子ファイルを作成することで行われます。これらの XML 記述子ファイルは、それらが記述するコンポーネントの Java 実装と非常に密接に結合しています。特にコードのリファクタリングが頻繁に行われる場合、この2つを常に整合させておくことは非常に難しいことがわかっています。uimaFIT は、UIMA コンポーネントを記述するための Java アノテーションを提供し、コード内で UIMA コンポーネントを直接記述できるようにします。これにより、コンポーネント定義のリファクタリング(構成パラメータ名の変更など)が大幅に簡素化されます。また、コード作成と並行して手動で行うのではなく、ビルドサイクルの一部として XML 記述子ファイルを生成することも可能にします。uimaFIT はまた、UIMA コンポーネントのプログラム的/動的インスタンス化を可能にする多数の便利なファクトリメソッドを提供することで、XML 記述子ファイルをまったく使用せずに UIMA コンポーネントを簡単にインスタンス化できるようにします。これにより、記述子ファイルを最初に作成する必要なくコンポーネントを簡単にインスタンス化して呼び出すことができるため、uimaFIT は UIMA コンポーネントのテストに理想的なライブラリとなります。uimaFIT は、パイプラインのプログラム的/動的インスタンス化によって実験を簡素化できる研究環境でも役立ちます。例えば、多数の実験条件にわたって10分割交差検証を実行する場合、実行ごとに異なる記述子ファイルのセットや、そのような記述子ファイルを生成するスクリプトを作成するのは非常に手間がかかります。uimaFIT は型システムに依存せず、特定の型システムに依存(または提供)しません。

uimaFIT は、UIMA 向けのファクトリ、インジェクション、テストユーティリティを提供するライブラリです。次のリストは、uimaFIT が提供する機能の一部を強調しています。

  • ファクトリ: 記述子ファイルなしで UIMA コンポーネントをプログラムでインスタンス化することを簡素化します。例えば、AnalysisEngine をインスタンス化するには、次のような呼び出しを行うことができます。

    root@kitploit:~
    AnalysisEngineFactory.createEngine(MyAEImpl.class, myTypeSystem,
      paramName1, paramValue2, 
      paramName2, paramValue2, 
      ...)
    
  • インジェクション: 構成パラメータ値と分析エンジン内の対応するメンバー変数とのバインディングを処理し、外部リソースのバインディングも処理します。例えば、構成パラメータをバインドするには、メンバー変数に @ConfigurationParameter のアノテーションを付けるだけです。外部リソースも同様に @ExternalResource アノテーションによって注入できます。次に、初期化メソッドに次の1行のコードを追加します。

    root@kitploit:~
    ConfigurationParameterInitializer.initialize(this, uimaContext).
    

    これは、uimaFIT の JCasAnnotator_ImplBase クラスを拡張すると自動的に処理されます。

  • テスト: uimaFIT は、ドキュメントに記載されているいくつかの方法でテストを簡素化します。記述子ファイルなしでコンポーネントを簡単にインスタンス化できるようにすることで、維持が困難で不要な XML の多くをテストコードから排除できます。これにより、テストの作成と維持が容易になります。また、コンポーネントをパイプラインとして実行することも、次のようなメソッド呼び出しで実現できます。

    root@kitploit:~
    SimplePipeline.runPipeline(reader, ae1, ..., aeN, consumer1, ... consumerN)
    

uimaFIT は Apache UIMA(TM) プロジェクトの一部です。uimaFIT は、Apache UIMA SDK の Java バージョンと互換性のあるバージョンでのみ使用できます。便宜上、uimaFIT のバイナリ配布パッケージには、uimaFIT を使用するために必要なすべてのライブラリが含まれています。特に初心者のユーザーは、完全な UIMA SDK のコピーを別途入手することを強くお勧めします。

uimaFIT は Maven Central から入手できます。ビルド環境に Maven を使用している場合は、次のように uimaFIT を依存関係として pom.xml ファイルに追加できます。

root@kitploit:~
<dependencies>
  <dependency>
    <groupId>org.apache.uima</groupId>
    <artifactId>uimafit-core</artifactId>
    <version>3.6.0</version>
  </dependency>
</dependencies>

モジュール

  • uimafit-core - 主要な uimaFIT モジュール
  • uimafit-cpe - Collection Processing Engine(マルチスレッドパイプライン)のサポート
  • uimafit-maven - uimaFIT メタデータを使用して UIMA コンポーネントを自動的に拡張し、uimaFIT 対応コンポーネントの XML 記述子を生成する Maven プラグイン
  • uimafit-junit - JUnit テストでの UIMA/uimaFIT テストの実装を容易にする便利なコード
  • uimafit-assertj - AssertJ フレームワークを介して UIMA/uimaFIT 型のアサーションを追加
  • uimafit-spring - UIMA と Spring Framework の統合の概念実証として機能する実験的なモジュール。現時点では完成しているとは見なされておらず、UIMA によって作成されたすべてのコンポーネントを Spring に通して Spring コンテキストの依存関係の配線を提供できるように UIMA フレームワークにパッチを適用するために、侵略的なリフレクションを使用しています。このモジュールは冒険心のあるユーザー向けに提供されていますが、現時点では安定している、完成している、あるいはパッケージの適切な一部とは見なされていません。例えば、バイナリ配布パッケージには含まれていません。

ビルド

Apache UIMA をビルドするには、少なくとも Java 17 JDK と最近の Maven 3 バージョンが必要です。

ソース配布 ZIP を展開するかリポジトリをクローンした後、作成されたディレクトリに移動して次のコマンドを実行します。

root@kitploit:~
mvn clean install

詳細については、http://uima.apache.org/building-uima.html を参照してください。

ソース/バイナリ配布から例を実行する

ソース配布とバイナリ配布は Apache UIMA ウェブサイト からダウンロードできます。

環境変数

選択したパッケージ(例: .zip や .gz)から Apache UIMA 配布物を解凍した後、以下の手順を実行して UIMA が適切に機能するように設定します。

  • JAVA_HOME を UIMA に使用したい JRE インストールのディレクトリに設定します。

  • UIMA_HOME を解凍した Apache UIMA 配布物の apache-uima ディレクトリに設定します。

  • UIMA_HOME/bin を PATH に追加します。

  • スクリプト UIMA_HOME/bin/adjustExamplePaths.bat(または .sh)を実行して、実際の UIMA_HOME ディレクトリパスに基づいて例のパスを更新してください。このスクリプトは Java プログラムを実行します。PATH に java があるか、環境変数 JAVA_HOME を適切な JRE に設定する必要があります。

    注: Mac OS X オペレーティングシステムでグローバル環境変数を設定する手順は、http://developer.apple.com/qa/qa2001/qa1067.html で説明されています。

インストールの確認

インストールをテストするには、bin サブディレクトリにある documentAnalyzer.bat(または .sh)ファイルを実行します。Document Analyzer ウィンドウが表示されます。この GUI に表示される値を次のように設定します。

  • Input Directory: UIMA_HOME/examples/data
  • Output Directory: UIMA_HOME/examples/data/processed
  • Location of Analysis Engine XML Descriptor: UIMA_HOME/examples/descriptors/analysis_engine/PersonTitleAnnotator.xml

上記の UIMA_HOME は、Apache UIMA インストールのパスに置き換えてください。

次に、Run ボタンをクリックします。少し待つと、Analyzed Results ウィンドウが表示されます。ドキュメントの1つをダブルクリックすると、そのドキュメントの分析結果が表示されます。

UIMA コンポーネントプロバイダー

分析ツールを UIMA コンポーネントとして提供する、またはサードパーティの分析ツールを UIMA コンポーネントとしてラップする、よく知られたプロジェクトをいくつか紹介します。

  • Apache cTAKES - 電子医療記録の臨床自由文からの情報抽出のための自然言語処理システム。
  • Apache OpenNLP - OpenNLP を UIMA 用にラップします。さまざまな型システムに適応可能。
  • Apache Ruta - 汎用のルールベースのテキスト分析。あらゆる型システムで動作。
  • ClearTK - いくつかのサードパーティツール(OpenNLP、CoreNLP など)をラップし、独自の機械学習モデルをトレーニングするための柔軟なフレームワークを提供します。CleartK 型システムを使用します。
  • DKPro Core - 多くのサードパーティツール(OpenNLP、CoreNLP など)をラップし、幅広いデータ形式をサポートします。DKPro Core 型システムを使用します。
  • JULIE Lab Component Repository (JCoRe) いくつかのサードパーティツール(OpenNLP、CoreNLP など)をラップし、特にバイオメド領域の幅広いデータ形式をサポートします。JCore 型システムを使用します。

これは網羅的なリストではありません。特定のプロジェクトをここに記載すべきだと感じた場合は、ぜひお知らせください。追加のものは、例えば次の方法で見つけることができます。

  • GitHub 依存関係グラフ をたどる
  • Google Scholar で UIMA を検索する

相互運用性

Apache UIMA Java SDK は、Java、Groovy、Scala など、Java 仮想マシンに基づくあらゆるプログラミング言語で使用できます。

Python との相互運用性は、例えば、XMI 形式の CAS データの読み取り、操作、書き込みに使用できるサードパーティの DKPro Cassis ライブラリを介して実現できます。

さらに読む

Apache UIMA Java SDK は、UIMA 仕様 の Java ベースの実装です。

サポート

質問は [email protected] までお願いします。

参考文献

学術研究をサポートするために uimaFIT を使用する場合は、以下の論文を適切に引用することを検討してください。

root@kitploit:~
@InProceedings{ogren-bethard:2009:SETQA-NLP,
  author    = {Ogren, Philip  and  Bethard, Steven},
  title     = {Building Test Suites for {UIMA} Components},
  booktitle = {Proceedings of the Workshop on Software Engineering, Testing, and Quality Assurance for Natural Language Processing (SETQA-NLP 2009)},
  month     = {June},
  year      = {2009},
  address   = {Boulder, Colorado},
  publisher = {Association for Computational Linguistics},
  pages     = {1--4},
  url       = {http://www.aclweb.org/anthology/W/W09/W09-1501}
}

歴史

  • 2000年代初頭: UIMA は、もともと IBM が非構造化情報(テキスト、音声、ビデオなど)の分析に関する研究の一環として開発しました。自然言語処理 (NLP) アプリケーションを対象に、大量の非構造化データをスケーラブルに処理するように設計されました。

  • 2004年: UIMA はオープンソース化され、IBM 外部からのより広範な利用と貢献が可能になりました。

  • 2006年: UIMA プロジェクトは Apache Incubator に受け入れられ、Apache プロジェクトになる正式なプロセスが開始されました。

  • 2008年: UIMA は Apache Incubator を卒業し、Apache のトップレベルプロジェクトになりました。これは、その成熟度と活発な開発を示しています。

  • 2009年: Apache UIMA-AS (Asynchronous Scaleout) が導入され、UIMA パイプラインの分散および非同期処理が可能になりました。

  • 2012年: uimaFIT が Apache UIMA プロジェクトに貢献されました。Apache uimaFIT は以前 uimaFIT として知られており、その前は UUTUC として知られていました。貢献される前は、コロラド大学デンバーの計算薬理学センター、コロラド大学ボルダーの計算言語・教育研究センター、ダルムシュタット工科大学の Ubiquitous Knowledge Processing (UKP) Lab の共同作業でした。

  • 2013年: UIMA DUCC (Distributed UIMA Cluster Computing) が Apache UIMA のサブプロジェクトとして導入されました。

  • 2016年: Apache UIMA Ruta (Rule-based Text Annotation) が拡張機能として導入され、ルールベースのテキスト処理のためのスクリプト言語が提供されました。

  • 2023年: UIMA DUCC と UIMA-AS は廃止されました。

  • 2024年: uimaFIT は UIMA Java SDK に統合されました。

ツールをダウンロード