Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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。

人気

すべて見る →

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

すべてのツールを探索

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

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

Apache UIMA Java SDK へようこそ

[Apache UIMA][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-CENTRAL] からインポートすることで、ほとんどのビルドツールで簡単にプロジェクトに追加できます。例えば、Maven を使用する場合、次の依存関係をプロジェクトに追加できます。

<dependency>
  <groupId>org.apache.uima</groupId>
  <artifactId>uimaj-core</artifactId>
  <version>3.6.0</version>
</dependency>

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

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

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

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

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 表現を画面に出力します。

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 アノテーションの両方が含まれます。

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());
}
分析コンポーネントの操作

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

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 をインスタンス化するには、次のような呼び出しを行うことができます。

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

    ConfigurationParameterInitializer.initialize(this, uimaContext).
    

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

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

    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 ファイルに追加できます。

<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 フレームワークにパッチを適用するために、侵略的なリフレクションを使用しています。このモジュールは冒険心のあるユーザー向けに提供されていますが、現時点では安定している、完成している、あるいはパッケージの適切な一部とは見なされていません。例えば、バイナリ配布パッケージには含まれていません。

ビルド

ツールをダウンロード