> ## 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 Extraction Rules コードでのトークンテンプレート操作 — トークンテキスト、レンマ、正規表現、述語、オブジェクト条件、反復演算子。

<table>
  <thead>
    <tr>
      <th>操作</th>
      <th>構文</th>
      <th>説明</th>
      <th>例</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>トークン</td>

      <td>
        <code>\[]</code>
      </td>

      <td>角括弧は1つのトークンを囲みます。</td>

      <td>
        <code>\[]</code> 任意の単語または句読点
      </td>
    </tr>

    <tr>
      <td>トークンのテキスト</td>

      <td>
        <code>""</code>
      </td>

      <td>引用符は、指定したテキストのトークンを表します。</td>

      <td>
        <code>\["Grantor"]</code> テキストが "Grantor" のトークン。
      </td>
    </tr>

    <tr>
      <td>変数</td>

      <td>
        <code>:</code>
      </td>

      <td>
        コロンは、その後に続くトークン列に名前を割り当てるために使用します。<strong>注:</strong> 変数を使用できるのは同じルール内のみです。つまり、右側部分が
        セミコロンで終わるまでです。
      </td>

      <td>
        <code>\[t: "Contract"]</code> "Contract" という単語を含むトークンを見つけて、変数 t に割り当てます。
      </td>
    </tr>

    <tr>
      <td>レンマ</td>

      <td>
        <code>L"word"</code> <code>Lemma"word"</code>
      </td>

      <td>単語の前に "L" または "Lemma" を付けると、その単語のあらゆる語形が検索対象になります。</td>

      <td>
        <code>\[L"rule"]</code> "rule"、"rules"、"ruled"、"ruling" などのトークンがすべて見つかります。
      </td>
    </tr>

    <tr>
      <td>正規表現</td>

      <td>
        <code>/regular expression/</code>
      </td>

      <td>
        正規表現は単一のスラッシュ (/) で囲みます。<strong>正規表現による値</strong>検索要素と同様に、{" "}
        <a href="https://www.pcre.org/current/doc/html/pcre2syntax.html">PCRE2</a> の正規表現構文を使用します。
      </td>

      <td>
        <code>/\[1]?\d:\d\{2}\s+((\[ap].m.)|(\[AP]M))?/</code> テンプレートは、たとえば "2:00 p.m." や "9:34 AM" などの 12 時間形式の時刻に一致します。
      </td>
    </tr>

    <tr>
      <td>正規表現のオプション設定</td>

      <td>
        <code>/regular expression/i</code>
      </td>

      <td>
        <a href="https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC16">オプション設定</a>は、正規表現の末尾を閉じるスラッシュの後に指定できます。たとえば、"i" オプションは、
        正規表現を大文字と小文字を区別せずにマッチングすることを意味します。
      </td>

      <td>
        <code>/\[1]?\d:\d\{2}\s+(\[ap].?m.?)?/i</code> このテンプレートは、大文字と小文字を区別しないマッチングを利用して、上記の例を簡略化したものです。たとえば、
        "2:00 p.m." や "9:34 AM" のような 12 時間形式の時刻にマッチします。
      </td>
    </tr>

    <tr>
      <td>トークン述語</td>

      <td>
        <code>\<first\_in\_paragraph></code>
      </td>

      <td>トークンが段落の先頭にあります。</td>

      <td>
        <code>\["Section" \<first\_in\_paragraph>]</code> 「Section」という単語が段落の先頭にあります。これは、たとえば、このトークンの直後にあるセクション番号を抽出するのに使用できます。
      </td>
    </tr>

    <tr>
      <td>トークン述語</td>

      <td>
        <code>\<punctuator></code>
      </td>

      <td>このトークンは句読記号です。</td>

      <td>
        <code>\["Tenant"] \[\<punctuator>]\{0,2}</code> 単語 "Tenant" の後には、閉じ角かっこやコンマなど、最大2つまでの句読記号が続く場合があります。
      </td>
    </tr>

    <tr>
      <td>トークン述語</td>

      <td>
        <code>\<initial\_letter\_capitalized></code>
      </td>

      <td>トークンは先頭が大文字です。</td>

      <td>
        <code>\[L"agreement" \<initial\_letter\_capitalized>]</code> このテンプレートは "Agreement" と "Agreements" には一致しますが、"agreement" には一致しません。
      </td>
    </tr>

    <tr>
      <td>トークン述語</td>

      <td>
        <code>\<mixed\_capitalization></code>
      </td>

      <td>トークン内の文字の一部のみが大文字です。</td>

      <td>
        <code>\[L"letter" \<mixed\_capitalization>]</code> このテンプレートは、たとえば "Letters" や "letteR" に一致します。
      </td>
    </tr>

    <tr>
      <td>トークン述語</td>

      <td>
        <code>\<all\_letters\_capitalized></code>
      </td>

      <td>このトークンはすべて大文字です。</td>

      <td>
        <code>\[t: @NEROrganization \<all\_letters\_capitalized>]+</code> このテンプレートは、すべて大文字で記述された組織を表す固有表現に一致します。
      </td>
    </tr>

    <tr>
      <td>論理 OR</td>

      <td>
        <code>|</code>
      </td>

      <td>縦棒は、トークンの代替テキストまたは代替条件を指定するために使用します。</td>

      <td>
        <code>\["Lender" | "Co-Lender"] \["shall"] \["have"]</code> このテンプレートは、"Lender shall have" または "Co-Lender shall have" のいずれかの文字列に一致します。
      </td>
    </tr>

    <tr>
      <td>論理 AND</td>
      <td>スペース</td>
      <td>スペースは、トークン条件における論理積として使用されます。</td>

      <td>
        <code>\[t: "Section" \<first\_in\_paragraph>]</code> "Section" という語を含み、かつ段落の先頭にあるトークンを見つけます。
      </td>
    </tr>

    <tr>
      <td>オブジェクト条件</td>

      <td>
        <code>@object\_name</code>
      </td>

      <td>
        アットマーク ("@") は、トークンがオブジェクト領域内にあることを示します。サポートされているオブジェクトは次のとおりです。固有表現オブジェクト (専用の
        検索要素としても使用できるものと同じ型で、"NER" という接頭辞が付きます) : <code>NERPerson</code>, <code>NEROrganization</code>, <code>NERAddress</code>, <code>NERLocation</code>, <code>NERDate</code>, <code>NERDuration</code>,{" "}
        <code>NERMoney</code>; 検索要素; <code>Sentence</code> - テキストフロー内の文ごとに個別のオブジェクトが作成されます; <code>Paragraph</code> - テキストフロー内の
        段落ごとに個別のオブジェクトが作成されます。
      </td>

      <td>
        <code>\[t: @NEROrganization]+ \["Lender"]</code> NEROrganization エンティティを含み、その後にキーワード "Lender" が続くトークンシーケンスに t という名前を付けます。{" "}
        <code>\[t: @NERPerson @Preamble\_Segment ]+</code> 前文セグメント内の人名を検出します (<strong>Input field</strong> 検索要素で表されます) 。
      </td>
    </tr>

    <tr>
      <td>類似したオブジェクトの区別</td>

      <td>
        <code>@object\_name( same )</code>
      </td>

      <td>
        "same" は、繰り返しトークンに対して、この型の複数のオブジェクトではなく、同じオブジェクトがトークン列にマッチすることを意味します。オブジェクト条件で論理 OR を使用している場合は、"same"
        を使用しないでください。
      </td>

      <td>
        たとえば、人名が連続して並んだリストがある場合、それらはすべて NERPerson として検出されます。1 回に 1 人分の名前を抽出するには、"same" 条件を使用します。{" "}
        <code>\[t: @NERPerson( same )]+</code> は、最初に見つかった人に t という名前を割り当てます。
      </td>
    </tr>

    <tr>
      <td>相対位置</td>

      <td>
        <code>@object\_name( right\_to( another\_object ))</code> <code>@object\_name( left\_to( another\_object ))</code>
      </td>

      <td>
        "right\_to" は、<strong>object\_name</strong> がかっこ内で指定された <strong>another\_object</strong> の後にあることを意味します。"left\_to" は、<strong>object\_name</strong> が
        かっこ内で指定された <strong>another\_object</strong> の前にあることを意味します。
      </td>

      <td>
        <code>\[ t: @NERAddress( same, right\_to( id1 ), left\_to( id2 ) )]</code> id1 と id2 の間にある NERAddress 固有表現を検出します。
      </td>
    </tr>

    <tr>
      <td>論理OR (オブジェクト条件で使用) </td>

      <td>
        <code>|</code>
      </td>

      <td>縦棒は、オブジェクト条件における論理和としても使用できます。</td>

      <td>
        <code>\[t: @NERPerson( right\_to( id1 ) | right\_to( id2 ) )]</code> id1 の後または id2 の後にある人名に、t という名前を割り当てます。
      </td>
    </tr>

    <tr>
      <td>トークン列</td>
      <td>スペース</td>
      <td>列内のトークンはスペースで区切られます。</td>

      <td>
        <code>\["Grantor"] \[":"]</code> このテンプレートは "Grantor:" に一致します。これらの語句を抽出する必要がない場合でも、コンテキストのためにトークンを指定できます。
      </td>
    </tr>

    <tr>
      <td>代替トークン列</td>

      <td>
        <code>\[token1]|(\[token2]\[token3])</code>
      </td>

      <td>代替トークン列を指定するには縦棒を使用します。丸括弧は優先度を設定します。</td>

      <td>
        <code>\["will"] (\["start"] | (\["take"] \["place"])) \["on"]</code> このテンプレートは、"will start on" と "will take place on" のいずれかに一致します。なお、
        括弧を省略すると、このテンプレートは "will start place on" にも一致してしまいます。括弧を付けることで、"take place" という句が完全な形で存在するか、まったく存在しないかのどちらかになることが保証されます。<strong>注:</strong>
        実際のより複雑な代替トークン列では、代替ごとに個別のルールを作成した方が便利な場合があります。

        <br />

        <br />

        <code>\["will"] \["start"] \["on"]</code>

        <br />

        <code>=></code>

        <br />

        <code>...;</code>

        <br />

        <code>\["will"] \["take"] \["place"] \["on"]</code>

        <br />

        <code>=></code>

        <br />

        <code>...;</code>
      </td>
    </tr>

    <tr>
      <td>省略可能なトークン</td>

      <td>
        <code>\[]?</code>
      </td>

      <td>疑問符は、そのトークンが省略可能であることを示します。</td>

      <td>
        <code>\["Tenant"] \["."]?</code> "Tenant" の後にはドットを付けることもできます。
      </td>
    </tr>

    <tr>
      <td>省略可能な繰り返しトークン</td>

      <td>
        <code>\[]\*</code>
      </td>

      <td>アスタリスクは、そのトークンが省略可能で、複数回繰り返せることを意味します。</td>

      <td>
        <code>\["Grantor"] \[]\* \["Tenant"]</code> キーワード "Grantor" と "Tenant" は、任意の数のトークンで区切られる場合もあれば、まったく区切られない場合もあります。
      </td>
    </tr>

    <tr>
      <td>必須の繰り返しトークン</td>

      <td>
        <code>\[]+</code>
      </td>

      <td>プラス記号は、そのトークンが少なくとも1回は見つかる必要があり、繰り返し現れてもよいことを意味します。</td>

      <td>
        <code>\[@NERPerson]+</code> 人名が見つかる必要があることを指定します。氏名は通常複数の単語で構成されるため、複数のトークンにまたがる場合があります。
      </td>
    </tr>

    <tr>
      <td>指定した回数だけ繰り返すトークン</td>

      <td>
        <code>\[]\{n,}</code> <code>\[]\{n,m}</code>
      </td>

      <td>
        波かっこ内の数値は、トークンを n 回から m 回まで繰り返すことを示します。2 番目の数値が指定されていない場合は、トークンを少なくとも n 回繰り返します。<strong>注:</strong>{" "}
        ご覧のとおり、<code>\{0,}</code> は <code>\*</code> と等価で、<code>\{1,}</code> は <code>+</code> と等価です。
      </td>

      <td>
        <code>\["Grantor"] \[]\{1,3} \["Tenant"]</code> キーワード "Grantor" と "Tenant" は、1 ～ 3 個のトークンで区切る必要があります。これは <code>\*</code> より便利な場合があります。2 つのキーワードが互いに離れすぎないように指定できるためです。
      </td>
    </tr>
  </tbody>
</table>
