> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comprender las reglas generadas

> Lea el código generado automáticamente para las propiedades de los elementos de búsqueda de NLP: referencias de ruta completa, simplificación de nombres y explicación regla por regla en Advanced Designer.

Cuando crea un elemento y configura sus propiedades en el panel **Properties**, el programa genera automáticamente el código correspondiente a esas propiedades. Esta sección le ayudará a comprender el código generado automáticamente para que pueda modificarlo si es necesario."

<div id="search-element-structure">
  ## Estructura del elemento de búsqueda
</div>

<Frame>
  <img src="https://mintcdn.com/abbyy/Bmjdl5TjCaidPxKi/images/vantage/advanced-designer/ad_extractionrulesnlp_exampleelements.png?fit=max&auto=format&n=Bmjdl5TjCaidPxKi&q=85&s=85fa49cf52523e1ae1ca9dcd95c0de24" alt="Ejemplo de estructura del elemento de búsqueda con el grupo Parties, que contiene los elementos secundarios Organization y dirección" style={{ width:"69%" }} width="542" height="464" data-path="images/vantage/advanced-designer/ad_extractionrulesnlp_exampleelements.png" />
</Frame>

El código generado automáticamente para el elemento de búsqueda `Parties.Address` tendrá el siguiente aspecto:

<div id="auto-generated-rule">
  ## Regla generada automáticamente
</div>

```
~Root.Parties.Address,
t1 : Root.Parties.Organization,
t2 : Root.kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+
=>
Root.Parties.Address( t );
```

Como puede ver, el código generado automáticamente siempre hace referencia a cada elemento de búsqueda usando la ruta completa para evitar conflictos de nombres. En este caso, podemos [acortar los nombres de los elementos](/es/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/basic-concepts#referencing-search-elements), eliminando Root de cada uno.

<div id="rule-with-shorter-element-names">
  ## Regla con nombres de elementos más breves
</div>

```
~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
```

Ahora podemos desglosar el significado de cada instrucción:

<div id="rule-explained">
  ## Explicación de la regla
</div>

```
// Verificar que el elemento de búsqueda Address aún no se haya encontrado, porque solo necesitamos la primera instancia
~Parties.Address,
// Obtener el elemento de búsqueda Organization y el siguiente elemento de búsqueda de palabra clave de parte. Se encontraron antes de Address
t1 : Parties.Organization,
t2 : kw_PreNextParty
// Encontrar la secuencia de tokens que contiene una entidad nombrada NERAddress
// (la palabra clave "same" especifica que solo se debe coincidir con un NERAddress si hay varios)
// La dirección debe estar ubicada después del nombre de la organización y antes de la palabra clave para la siguiente parte
// El signo + significa que la secuencia de tokens puede consistir en varias palabras
// La condición ~@Parties.Address al final garantiza
// que la dirección no se vuelva a coincidir en los mismos tokens
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
```
