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
General Purpose UtilitiesCode AnalysisScripting & AutomationUtilities & FrameworksMachine LearningLearning & Education
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는 다음을 제공합니다:

  • 편리한 데이터 구조 --공통 분석 구조(CAS)--를 제공하여 해당 데이터를 표현합니다
  • CAS에 저장된 강화된 데이터에 대한 스키마 역할을 하는 유형 시스템 개념 서비스
  • 해당 데이터를 처리하기 위한 reader, 분석 엔진(프로세서) 및 consumer(작성자)로 구성된 컴포넌트 모델
  • 여러 분석 엔진을 파이프라인으로 집계하고 실행하는 모델(선택적으로 병렬화 가능)
  • 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 사용하기

대부분의 빌드 도구에서 Maven Central에서 가져와 Apache UIMA Java SDK를 쉽게 프로젝트에 추가할 수 있습니다. 예를 들어 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>
유형 시스템 생성하기

유형 시스템은 비정형 정보(여기서는 텍스트 문서)에 첨부하려는 정보의 유형을 정의합니다. 이 예에서는 엔터티 언급을 식별하려고 하므로, 엔터티가 속한 카테고리를 저장하는 데 사용할 수 있는 기능 카테고리가 있는 유형 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);
공통 분석 구조 객체 생성하기

이제 분석하려는 텍스트를 저장할 공통 분석 구조(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);
주석 추가 및 검색하기

이제 예제 텍스트에서 Apache UIMA 언급을 식별하기 위해 my.Entity 유형의 주석을 생성합니다.

마지막으로, 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 구현과 매우 밀접하게 연결되어 있습니다. 특히 코드 리팩토링이 매우 빈번할 때 두 가지를 일관되게 유지하는 것이 매우 어렵다는 것을 알게 되었습니다. 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 어노테이션을 통해 주입할 수 있습니다. 그런 다음 초기화 메서드에 한 줄의 코드를 추가하십시오:

    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을 사용하는 경우 다음과 같이 pom.xml 파일에 uimaFIT를 종속성으로 추가할 수 있습니다:

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 - 컬렉션 처리 엔진(멀티스레드 파이프라인) 지원
  • uimafit-maven - UIMA 컴포넌트에 uimaFIT 메타데이터를 자동으로 추가하고 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에 표시된 값을 다음과 같이 설정하십시오:

  • 입력 디렉토리: UIMA_HOME/examples/data
  • 출력 디렉토리: UIMA_HOME/examples/data/processed
  • 분석 엔진 XML 설명자 위치: UIMA_HOME/examples/descriptors/analysis_engine/PersonTitleAnnotator.xml

위의 UIMA_HOME을 Apache UIMA 설치 경로로 바꾸십시오.

그런 다음 실행 버튼을 클릭하면 잠시 후 분석 결과 창이 나타납니다. 문서 중 하나를 더블 클릭하여 해당 문서의 분석 결과를 확인하십시오.

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 Virtual Machine 기반의 모든 프로그래밍 언어와 함께 사용할 수 있습니다.

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 인큐베이터에 수락되어 Apache 프로젝트가 되기 위한 공식 절차를 시작했습니다.

  • 2008: UIMA가 Apache 인큐베이터를 졸업하고 최상위 Apache 프로젝트가 되어 성숙도와 활발한 개발을 의미하게 되었습니다.

  • 2009: Apache UIMA-AS(Asynchronous Scaleout)가 도입되어 UIMA 파이프라인의 분산 및 비동기 처리가 가능해졌습니다.

  • 2012: uimaFIT가 Apache UIMA 프로젝트에 기여되었습니다. Apache uimaFIT는 이전에 uimaFIT로 알려졌으며, 다시 그 이전에는 UUTUC로 알려졌습니다. 기여되기 전에는 University of Colorado Denver의 Center for Computational Pharmacology, University of Colorado at Boulder의 Center for Computational Language and Education Research, 그리고 Technische Universität Darmstadt의 Ubiquitous Knowledge Processing (UKP) Lab 간의 공동 노력이었습니다.

  • 2013: UIMA DUCC(Distributed UIMA Cluster Computing)가 Apache UIMA의 하위 프로젝트로 도입되었습니다.

  • 2016: Apache UIMA Ruta(규칙 기반 텍스트 주석)가 확장 기능으로 도입되어 규칙 기반 텍스트 처리를 위한 스크립팅 언어를 제공합니다.

  • 2023: UIMA DUCC와 UIMA-AS가 폐기되었습니다.

  • 2024: uimaFIT가 UIMA Java SDK에 병합되었습니다.

도구 다운로드