> ## 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.

# 生成されたルールを理解する

> NLP 検索要素のプロパティ向けに自動生成されるコードを読み解く — フルパス参照、名前の簡略化、Advanced Designer でのルールごとの説明。

**Properties** ペインで要素を作成し、そのプロパティを設定すると、プログラムがそれらのプロパティ用のコードを自動生成します。本セクションでは、その自動生成コードの内容を理解し、必要に応じて修正できるように解説します。

<div id="search-element-structure">
  ## 検索要素の構造
</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="Organization と 住所 を子要素に持つ Parties グループの検索要素の構造の例" style={{ width:"69%" }} width="542" height="464" data-path="images/vantage/advanced-designer/ad_extractionrulesnlp_exampleelements.png" />
</Frame>

`Parties.Address` 検索要素の自動生成されるコードは次のようになります。

<div id="auto-generated-rule">
  ## 自動生成ルール
</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 );
```

ご覧のとおり、自動生成されたコードは、名前の競合を避けるため、常にフルパスで各検索要素を参照します。今回のケースでは、各要素名から Root を取り除くことで、[要素名を短くできます](/ja/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/basic-concepts#referencing-search-elements)。

<div id="rule-with-shorter-element-names">
  ## 要素名を短くしたルール
</div>

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

ここで各ステートメントの意味を順に見ていきましょう。

<div id="rule-explained">
  ## ルールの説明
</div>

```
// Address検索要素がまだ見つかっていないことを確認します。最初のインスタンスのみが必要です
~Parties.Address,
// Organization検索要素と次のパーティキーワード検索要素を取得します。これらはAddressより前に見つかっています
t1 : Parties.Organization,
t2 : kw_PreNextParty
// 1つのNERAddress名前付きエンティティを含むトークンシーケンスを検索します
// (「same」キーワードは、複数存在する場合でも1つのNERAddressのみを一致させることを指定します)
// アドレスは組織名の後、次のパーティのキーワードの前に位置する必要があります
// +記号は、トークンシーケンスが複数の単語で構成される可能性があることを示します
// 最後の~@Parties.Address条件により
// 同じトークンで再度アドレスが一致しないことが保証されます
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
```
