Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
apache__uima-uimaj_CVE-2022-32287_3-3-0 — SDK Java pour construire des pipelines d'analyse qui traitent et enrichissent des données textuelles non structurées avec des annotations, des systèmes de types et des moteurs d'analyse modulaires. | Kitploit
Outils/GitHubGitHub/shoucheng3/apache__uima-uimaj_cve-2022-32287_3-3-0
Utilitaires GénérauxAnalyse de CodeScripting et AutomatisationUtilitaires et FrameworksApprentissage AutomatiqueApprentissage et Éducation
GitHubshoucheng3/apache__uima-uimaj_cve-2022-32287_3-3-0

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

SDK Java pour construire des pipelines d'analyse qui traitent et enrichissent des données textuelles non structurées avec des annotations, des systèmes de types et des moteurs d'analyse modulaires.

Voir le dépôt
19il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Bienvenue dans le SDK Java Apache UIMA

[Apache UIMA][UIMA] vous aide à gérer les données non structurées (comme les textes) qui sont enrichies d'informations utiles. Par exemple, si vous souhaitez identifier une mention d'une entité dans un texte ou éventuellement lier cette entité à un jeu de données de référence, Apache UIMA fournit :

  • une structure de données pratique – la Common Analysis Structure (CAS) – pour représenter ces données
  • un service de concept de système de types servant de schéma pour les données enrichies stockées dans la CAS
  • un modèle de composant composé d'un lecteur, de moteurs d'analyse (processeurs) et de consommateurs (rédacteurs) pour traiter ces données
  • un modèle pour agréger plusieurs moteurs d'analyse en pipelines et les exécuter (éventuellement parallélisés)
  • diverses options pour (dé)sérialiser la CAS depuis/vers différents formats
  • et bien d'autres fonctionnalités supplémentaires !

Notez que le SDK Java Apache UIMA fournit uniquement un cadre pour la construction d'analytiques, mais ne fournit aucune analytique en soi. Cependant, divers tiers s'appuient sur Apache UIMA et proposent des collections de composants d'analyse ou des solutions prêtes à l'emploi.

Configuration système requise

Apache UIMA v3.6.0 et versions ultérieures nécessite Java 17 ou version ultérieure.

L'exécution du plugin Eclipse pour UIMA nécessite de démarrer Eclipse 4.25 (2022-09) ou ultérieur avec Java 17 ou version ultérieure.

L'exécution de l'outil de migration sur les fichiers de classe nécessite l'utilisation d'un JDK Java, pas d'un JRE Java.

Les plateformes prises en charge sont : Windows, Linux et macOS. D'autres implémentations de la plateforme Java devraient fonctionner mais n'ont pas été testées de manière significative.

La plupart des scripts du répertoire /bin invoquent Java. Ils utilisent la valeur de la variable d'environnement JAVA_HOME pour localiser le Java à utiliser ; si elle n'est pas définie, ils invoquent java en s'attendant à trouver un Java approprié dans votre variable PATH.

Utilisation du SDK Java Apache UIMA

Vous pouvez facilement ajouter le SDK Java Apache UIMA à votre projet dans la plupart des outils de construction en l'important depuis [Maven Central][MAVEN-CENTRAL]. Par exemple, si vous utilisez Maven, vous pouvez ajouter la dépendance suivante à votre projet :

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

Ensuite, nous donnons quelques brefs exemples d'utilisation du SDK Java Apache UIMA et de la bibliothèque Apache uimaFIT. Apache uimaFIT est une dépendance distincte que vous pouvez ajouter :

<dependency>
  <groupId>org.apache.uima</groupId>
  <artifactId>uimafit-core</artifactId>
  <version>3.6.0</version>
</dependency>
Création d'un système de types

Le système de types définit le type d'informations que nous souhaitons attacher aux informations non structurées (ici un document texte). Dans notre exemple, nous voulons identifier les mentions d'entités, nous définissons donc un type my.Entity avec une caractéristique category qui peut être utilisée pour stocker la catégorie à laquelle appartient l'entité.

Pour illustrer les informations qu'UIMA maintient en interne sur le schéma d'annotation, nous écrivons le schéma généré au format XML à l'écran.

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);
Création d'un objet Common Analysis Structure

Maintenant, nous créons un objet Common Analysis Structure (CAS) dans lequel nous stockons le texte que nous souhaitons analyser.

Encore une fois, pour illustrer les informations qu'UIMA stocke en interne dans l'objet CAS, nous écrivons une représentation XML de l'objet à l'écran.

var cas = CasFactory.createCas(tsd);
cas.setDocumentText("Welcome to Apache UIMA.");
cas.setDocumentLanguage("en");

CasIOUtils.save(cas, System.out, SerialFormat.XMI_PRETTY);
Ajout et récupération d'annotations

Maintenant, nous créons une annotation de type my.Entity pour identifier la mention de Apache UIMA dans le texte d'exemple.

Enfin, nous parcourons toutes les annotations dans la CAS et les affichons à l'écran. Cela inclut la DocumentAnnotation par défaut qui est toujours créée par UIMA ainsi que l'annotation my.Entity que nous avons créée nous-mêmes.

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());
}
Travailler avec des composants d'analyse

Afin d'organiser différents types d'analyse en étapes, nous les regroupons généralement dans des moteurs d'analyse individuels. Nous illustrons maintenant comment de tels composants peuvent être construits et comment ils peuvent être exécutés en tant que pipeline d'analyse.

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());
}

Utilisation d'uimaFIT

Télécharger l’outil