Passer au contenu principal
Ces exemples montrent comment utiliser des scripts d’extraction avec l’objet FieldExtractor pour détecter des entités nommées, exécuter des requêtes XML et analyser des composants d’adresse dans des champs distincts.

Exemple de script d’extraction C#

L’exemple C# suivant exécute plusieurs méthodes d’extraction sur l’objet FieldExtractor. Il fait correspondre des mots-clés et des noms de personnes, écrit des segments de texte dans des champs et exécute une requête XML sur des expressions de deux mots du dictionnaire.
FieldExtractor.ExtractRegularExpression( "(grant(s))|(convey to)|(grant)", "keyWords" );
FieldExtractor.ExtractWordsFromUserDictionary("dictionary", "English");
FieldExtractor.ExtractNerObjects();

// Accéder aux objets identifiés par nom de collection
IExtractedObjects personObjects = FieldExtractor.ExtractedObjects( "NerPerson" );
IExtractedObjects keyWordsObjects = FieldExtractor.ExtractedObjects( "keyWords" );

// Rechercher la personne correspondante à gauche du mot-clé
for( int i = 0; i < keyWordsObjects.Count; i++ ) {
    IExtractedObject keyWord = personObjects.Item( i );
    IInterval span = keyWord.Span;
    IExtractedObject grantor = personObjects.Find( span.StartPos, false );
    string grantorName = grantor.Value;
    if ( grantorName.Length > 2 && grantorName != "Doug Darrell" ) {
        FieldExtractor.PutSpanToField( grantor.Span, "NlpField1" );
    }
}

// Accéder au texte source
string sourceText = FieldExtractor.SourceText;

// Écrire une étendue de texte quelconque dans un champ
FieldExtractor.PutTextToField( 0, sourceText.Length - 1, "NlpField2" );

// Une requête XML qui recherche des expressions de deux mots dans le dictionnaire
string query = "<Request> " +
    "<Query>" +
    "<Contain MaxDistance=\"1\">" +
    "<Required>" +
    "<Form><Attributes><Attribute>dictionary1</Attribute></Attributes></Form>" +
    "</Required>" +
    "<Required>" +
    "<Form><Attributes><Attribute>dictionary2</Attribute></Attributes></Form>" +
    "</Required>" +
    "</Contain>" +
    "</Query>" +
    "</Request>";

// Exécuter la requête, récupérer la collection de résultats et les enregistrer dans un champ
FieldExtractor.RunQueryAndSaveToField( query, "query1", "NlpField3");

// Exécuter la requête et récupérer la collection de résultats
IExtractedObjects queryResults1 = FieldExtractor.RunQuery( query, "query2" );

// Une autre façon d'accéder aux résultats de la requête après son exécution
IExtractedObjects queryResults2 = FieldExtractor.QueryResults( "query2" );

Paramètres du script

NomTypeAutorisationsValeur
FieldExtractorIFieldExtractorLectureIdentifie les champs dans le texte d’un document

Exemple de script d’extraction d’adresse pour l’intégralité du champ

Ce script est appelé pour l’intégralité du champ source. Il analyse l’adresse et extrait le code postal et la rue dans des champs distincts.
// Analyser l'adresse
this.ParseAddress();

// Extraire les composants dans des champs séparés
var zip = this.ExtractedObjects( "NerZipCode" );
var street = this.ExtractedObjects( "NerStreet" );

for( var i = 0; i < zip.Count; i++ ) {
    this.PutSpanToField( zip.Item(i).Span, "ZipCode" );
}

for( var j = 0; j < street.Count; j++ ) {
    this.PutSpanToField( street.Item(j).Span, "Street" );
}

Exemple de script d’extraction d’adresse pour une partie d’un champ

Ce script est appelé pour une partie du champ source. Il détecte l’objet d’adresse NER, le décompose en composants et enregistre le code postal et la rue dans des champs distincts.
// Détecter tous les objets NER dans le texte du champ ou de la section
this.ExtractNerObjects();

// Extraire l'objet Address
var address = this.ExtractedObjects( "NerAddress" );

// Décomposer l'adresse en composants
for( var addressSpanIndex = 0; addressSpanIndex < address.Count; addressSpanIndex++ ) {
    this.PutSpanToField( address.Item(addressSpanIndex).Span, "Address" );

    // Attribuer un préfixe unique aux noms de toutes les collections de composants pour l'adresse donnée
    var collectionName = "nerAddress" + String(addressSpanIndex);

    // Extraire l'adresse
    this.ParseAddressInPosition( collectionName, address.Item(addressSpanIndex).Span.StartPos, address.Item(addressSpanIndex).Span.EndPos );

    // Enregistrer les composants dans des champs distincts
    var zip = this.ExtractedObjects( collectionName, "NerZipCode" );
    var street = this.ExtractedObjects( collectionName, "NerStreet" );
    RunQueryAndSaveToField
    for( var i = 0; i < zip.Count; i++ ) {
        this.PutSpanToField( zip.Item(i).Span, "ZipCode" );
    }
    for( var j = 0; j < street.Count; j++ ) {
        this.PutSpanToField( street.Item(j).Span, "Street" );
    }
}