Passer au contenu principal
Pour chaque élément de recherche, le code d’une activité Extraction Rules contient une série de règles exécutées séquentiellement. Chaque règle comporte deux parties et se termine par un point-virgule :
Partie gauche
=>
Partie droite ;
La partie gauche vérifie une condition ou trouve des valeurs qui la remplissent. La partie droite crée de nouvelles instances d’éléments de recherche et leur attribue ces valeurs.

Exemple

La règle simple ci-dessous recherche un élément kw_Contract contenant le mot-clé « Contract » :
[ t: "Contract" ] // recherche du mot "Contract" et affectation du jeton à une nouvelle variable nommée t
=>
kw_Contract( t ); // création d'une nouvelle instance de l'élément de recherche kw_Contract à chaque occurrence du mot "Contract"

Structure de la partie gauche

La partie gauche peut comporter jusqu’à trois éléments :
Condition_d'existence
Modèle_de_jeton
Vérification_supplémentaire
  1. Condition d’existence (facultatif) : Recherche un objet ayant les attributs spécifiés. Nous recommandons d’attribuer un nom à l’objet s’il existe, afin de pouvoir le réutiliser dans la même règle. La condition peut également indiquer l’absence d’un objet.

Exemples

Si vous devez trouver une seule instance de l’élément de recherche SellerName, indiquez au début de la règle qu’aucune instance n’a encore été trouvée :
~SellerName // vérifie que l'élément de recherche SellerName n'a pas encore été identifié
Notez que vous ne pouvez pas attribuer de nom de variable lorsque vous utilisez des conditions négatives, car une condition négative implique qu’il n’y a pas d’objet. Cette condition vérifie l’existence d’une entité nommée « address » :
a: NERAddress // vérifie l'existence d'une entité nommée de type adresse et l'affecte à une nouvelle variable appelée a
Voir Condition d’existence pour plus de détails sur la syntaxe utilisée dans cette section.
  1. Modèle de jeton (obligatoire) : se compose d’une séquence de jetons. Un jeton est un mot d’une langue naturelle ou un signe de ponctuation. Les jetons ne contiennent généralement pas d’espaces, sauf dans de rares cas où l’espace se trouve à l’intérieur d’une locution utilisée comme un seul mot : par exemple, beaucoup.

Exemple

Par exemple, le modèle de jetons suivant se compose d’un jeton correspondant au mot-clé « Grantor », d’un jeton avec deux-points, et d’un jeton répétitif avec l’entité nommée Person (indiqué comme répétitif car le nom d’une personne peut être composé de plusieurs mots, chacun constituant un jeton distinct) :
["Grantor"] [":"] [p: @NERPerson]+
Le modèle correspondra à une chaîne de texte telle que « Grantor: Anne Smith » et attribuera la valeur « Anne Smith » à la variable p. Voir Modèle de jeton pour plus de détails sur la syntaxe utilisée dans cette section.
  1. Vérification supplémentaire (facultatif) : vérifie des conditions supplémentaires pour les objets déjà mentionnés dans la règle.

Exemple

Par exemple, supposons que vous recherchiez les parties d’un contrat et que vous ayez regroupé les champs en deux instances de groupe distinctes, une pour chaque partie. Après avoir trouvé un nom d’organisation et une adresse, vous pouvez vérifier si ces éléments recherchés ont le même parent. Si c’est le cas, cela signifie que cette adresse appartient à cette organisation.
n: Party.OrgName // l'élément de recherche du nom d'organisation a été trouvé précédemment
[ a: @Party.Address ] // trouve le jeton sur lequel l'élément de recherche d'adresse a été trouvé
// Vérifie que les éléments de recherche du nom d'organisation et de l'adresse
// sont des enfants de la même instance de l'élément de groupe Party
parent( n ) == parent( obj( a ) )
Voir Additional check pour plus de détails sur la syntaxe utilisée dans cette section.

Structure de la partie droite

La partie droite est composée d’une ou de plusieurs parties, séparées par des virgules, qui créent de nouvelles instances de groupes et d’éléments de recherche et qui attribuent des valeurs à ces éléments de recherche :
Créer_groupe_A,
Créer_élément_B_et_attribuer_valeur
En général, la partie gauche de la règle identifie un jeton, une séquence de jetons ou un objet dans la partie gauche et l’assigne à une variable. Ensuite, la partie droite peut utiliser cette variable pour écrire sa valeur dans l’un des éléments de recherche. Par exemple, le code suivant écrit la valeur de t dans l’élément de recherche Element1 :

Exemple

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
Voir Partie droite pour des informations détaillées sur la syntaxe utilisée dans cette section. Remarque : Le code crée uniquement des instances d’éléments de recherche et de groupes d’éléments de recherche déjà présents dans l’activité Extraction Rules. Aucun nouvel élément de recherche ne peut être créé par le code. Pour ajouter des éléments de recherche supplémentaires à la structure, utilisez l’onglet Search Elements dans l’Activity Editor.

Référencement des éléments de recherche

Pour accéder à un élément de recherche dans le code, vous devez utiliser un nom qui identifie cet élément sans ambiguïté. Si un élément a un nom unique, vous pouvez simplement vous y référer par ce nom. S’il existe plusieurs éléments portant le même nom, vous devez spécifier un chemin suffisamment long pour identifier l’élément.

Exemple

Examinez la structure imbriquée suivante d’éléments de recherche :
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
Pour faire référence au nom de l’acheteur dans le code, vous pouvez simplement utiliser “FullName”, car l’élément portant ce nom est unique. “Buyer.FullName” ou “Root.Buyer.FullName” fonctionneront tout aussi bien. Pour faire référence à l’adresse de l’acheteur, vous devrez ajouter au moins le nom du groupe parent, car il existe deux éléments intitulés “Address”. Ici, utilisez “Buyer.Address” ou “Root.Buyer.Address”.

Règles spécifiques à une langue

Vous pouvez spécifier la langue du document pour laquelle la règle doit être exécutée. Cela permettra d’ignorer la règle pour les autres langues. Faites précéder la règle d’un caractère dièse (#) et du code de langue à deux lettres (norme ISO 639-1).

Codes des langues prises en charge

LangueCode
Anglaisen
Allemandde
Françaisfr
Espagnoles
Italienit
Portugais (standard)pt
Japonaisja
Russeru
Par exemple, si vous traitez des documents en anglais et en espagnol, vous pouvez utiliser des mots-clés spécifiques à chaque langue :

Exemple

#en
[ t: "Grantor" ] // le mot-clé pour les documents anglais
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // le mot-clé pour les documents espagnols
=>
kw_landlord( t );