[] | Le parentesi quadre racchiudono un singolo token. | [] Qualsiasi parola o segno di punteggiatura. |
| testo del token | "" | Le virgolette indicano un token con il testo specificato. | ["Grantor"] Un token con la parola “Grantor”. |
| variabile | : | I due punti vengono utilizzati per assegnare un nome alla sequenza di token che segue. Nota: La variabile sarà disponibile solo all’interno della stessa regola, ovvero fino a quando la parte destra non termina con un punto e virgola. | [t: "Contract"] Trova un token che contiene la parola “Contract” e lo assegna alla variabile t. |
| lemma | L"word" Lemma"word" | “L” o “Lemma” prima di una parola significa che la ricerca deve trovare tutte le forme di quella parola. | [L"rule"] Verranno trovati token come “rule”, “rules”, “ruled” e “ruling”. |
| espressione regolare | /regular expression/ | Le barre singole racchiudono un’espressione regolare. Come per gli elementi di ricerca Value from Regular Expression, viene utilizzata la sintassi delle espressioni regolari PCRE2. | /[1]?\d:\d{2}\s+(([ap]\.m\.) | ([AP]M))?/ Il modello corrisponderà all’ora in formato a 12 ore, ad esempio “2:00 p.m.”, “9:34 AM”. |
| impostazione delle opzioni per le espressioni regolari | /regular expression/i | L’impostazione delle opzioni può essere inserita dopo la barra che chiude l’espressione regolare. L’opzione “i”, ad esempio, indica la corrispondenza senza distinzione tra maiuscole e minuscole dell’espressione regolare. | /[1]?\d:\d{2}\s+([ap]\.?m\.?)?/i Questo modello semplifica l’esempio precedente con l’aiuto della corrispondenza senza distinzione tra maiuscole e minuscole. Corrisponderà all’ora in formato a 12 ore, ad esempio “2:00 p.m.”, “9:34 AM”. |
| predicati del token | <first_in_paragraph> | Il token è il primo in un paragrafo. | ["Section" <first_in_paragraph>] La parola “Section” inizia il paragrafo. È possibile utilizzarlo, ad esempio, per estrarre il numero di sezione immediatamente successivo a questo token. |
| predicati del token | <punctuator> | Il token è un segno di punteggiatura. | ["Tenant"] [<punctuator>]{0,2} La parola “Tenant” può essere seguita da un massimo di due segni di punteggiatura, ad esempio una parentesi di chiusura e una virgola. |
| predicati del token | <initial_letter_capitalized> | Il token inizia con una lettera maiuscola. | [L"agreement" <initial_letter_capitalized>] Questo modello corrisponderà a “Agreement” e “Agreements”, ma non a “agreement”. |
| predicati del token | <mixed_capitalization> | Alcune lettere del token, ma non tutte, sono maiuscole. | [L"letter" <mixed_capitalization>] Questo modello corrisponderà, ad esempio, a “Letters” e “letteR”. |
| predicati del token | <all_letters_capitalized> | Il token è composto da tutte lettere maiuscole. | [t: @NEROrganization <all_letters_capitalized>]+ Questo modello corrisponderà alle entità denominate di organizzazioni scritte in maiuscolo. |
| OR logico | | | Una barra verticale viene utilizzata per specificare testo alternativo del token o condizioni alternative per il token. | ["Lender" | "Co-Lender"] ["shall"] ["have"] Questo modello corrisponderà a una di queste stringhe: “Lender shall have” o “Co-Lender shall have” |
| AND logico | spazio | Lo spazio viene utilizzato come congiunzione logica per le condizioni del token. | [t: "Section" <first_in_paragraph>] Trova un token che contiene la parola “Section” E inizia un paragrafo. |
| condizione dell’oggetto | @object_name | Il simbolo chiocciola (”@”) verifica che il token si trovi all’interno di una regione di oggetto. Sono supportati i seguenti oggetti: Oggetti di entità denominate, gli stessi tipi disponibili anche come elementi di ricerca specializzati, con prefisso “NER”: NERPerson, NEROrganization, NERAddress, NERLocation, NERDate, NERDuration, NERMoney; Elementi di ricerca; Sentence - Viene creato un oggetto separato per ogni frase nel flusso di testo; Paragraph - Viene creato un oggetto separato per ogni paragrafo nel flusso di testo. | [t: @NEROrganization]+ ["Lender"] Assegna il nome t a una sequenza di token che contiene un’entità NEROrganization ed è seguita dalla parola chiave “Lender”. [t: @NERPerson @Preamble_Segment ]+ Trova il nome di una persona nel segmento del preambolo (rappresentato da un elemento di ricerca Input field). |
| separazione di oggetti simili | @object_name( same ) | “same” significa che su un token ripetuto, lo stesso oggetto viene abbinato alla sequenza di token invece di diversi oggetti di questo tipo. Se la condizione dell’oggetto utilizza un OR logico, “same” non deve essere utilizzato. | Ad esempio, se si dispone di un elenco di nomi di persone che si susseguono, verranno tutti rilevati come NERPerson. Per estrarre il nome di una persona alla volta, utilizzare la condizione “same”. [t: @NERPerson( same )]+ Assegna il nome t alla prima persona trovata. |
| posizione relativa | @object_name( right_to( another_object )) @object_name( left_to( another_object )) | “right_to” significa che object_name si trova dopo another_object specificato tra parentesi. “left_to” significa che object_name si trova prima di another_object specificato tra parentesi. | [ t: @NERAddress( same, right_to( id1 ), left_to( id2 ) )] Trova un’entità denominata NERAddress tra id1 e id2. |
| OR logico (come utilizzato nelle condizioni dell’oggetto) | | | Una barra verticale può essere utilizzata anche come disgiunzione logica per le condizioni dell’oggetto. | [t: @NERPerson( right_to( id1 ) | right_to( id2 ) )] Assegna il nome t al nome di una persona situata dopo id1 o dopo id2. |
| sequenza di token | spazio | I token in una sequenza sono separati da spazi. | ["Grantor"] [":"] Questo modello corrisponderà a “Grantor:”. I token possono essere specificati semplicemente per il contesto, anche se queste parole non devono essere estratte. |
| sequenze di token alternative | [token1] | ([token2][token3]) | Una barra verticale viene utilizzata per specificare sequenze di token alternative. Le parentesi tonde impostano la priorità. | ["will"] (["start"] | (["take"] ["place"])) ["on"]Questo modello corrisponderà a una di queste stringhe: “will start on” o “will take place on”. Si noti che se avessimo omesso le parentesi, il modello avrebbe corrisposto anche a “will start place on”. Le parentesi assicurano che la frase “take place” sia presente completamente o non lo sia affatto. Nota: Per casi reali più complessi di sequenze di token alternative, potrebbe risultare più comodo scrivere una regola separata per ciascuna alternativa:["will"] ["start"] ["on"] => ...; ["will"] ["take"] ["place"] ["on"] => ...; |
| token opzionale | []? | Un punto interrogativo indica che il token è opzionale. | ["Tenant"] ["."]? La parola “Tenant” può essere seguita da un punto. |
| token opzionale ripetibile | []* | Un asterisco indica che il token è opzionale e può essere ripetuto più volte. | ["Grantor"] []* ["Tenant"] Le parole chiave “Grantor” e “Tenant” possono essere separate da un numero qualsiasi di token o da nessuno. |
| token obbligatorio ripetibile | []+ | Un segno più indica che il token deve essere presente almeno una volta e può essere ripetuto. | [@NERPerson]+ Specifica che deve essere presente il nome di una persona, eventualmente distribuito su più token, poiché il nome è solitamente composto da più parole. |
| token con numero specificato di ripetizioni | []{n,} []{n,m} | I numeri tra parentesi graffe indicano che il token deve essere ripetuto da n a m volte. Se il secondo numero non è specificato, il token deve essere ripetuto almeno n volte. Nota: Come si può notare, {0,} è equivalente a *, mentre {1,} è equivalente a +. | ["Grantor"] []{1,3} ["Tenant"] Le parole chiave “Grantor” e “Tenant” devono essere separate da 1 a 3 token. Questo può risultare più utile di *, perché permette di specificare che le due parole chiave non siano troppo distanti tra loro. |