各検索要素ごとに、Extraction Rules アクティビティ内のコードには、順次実行される一連のルールが含まれます。各ルールは2つの部分から成り、末尾はセミコロンで終わります。
左側部分は条件を判定し、条件を満たす値を抽出します。右側部分は新しい検索要素インスタンスを作成し、そこに値を割り当てます。
次の単純なルールは、キーワード「Contract」を含む検索要素 kw_Contract を検出します。
左側部分は最大3つの部位で構成されています。
指定した属性を持つオブジェクトを検索します。オブジェクトが存在する場合は、同じルール内で再利用できるよう、そのオブジェクトに名前を付けることを推奨します。この条件では、オブジェクトが存在しないことを指定することもできます。
例
SellerName 検索要素のインスタンスを1件だけ見つけたい場合は、ルールの先頭で、まだインスタンスが見つかっていないことを指定します。
否定条件を使用する場合は、変数名を割り当てられません。否定条件はオブジェクトが存在しないことを意味するためです。
この条件は、address という名前の固有表現が存在するかどうかを確認します。
この部分で使用される構文の詳細は、Existence conditionを参照してください。
トークンの並びで構成されます。トークンとは、自然言語の単語または句読点です。トークンには通常スペースは含まれませんが、1つの語として扱われる表現の中に空白が含まれるまれなケース (such as や a lot など) があります。
例
たとえば、次のトークンテンプレートは、「Grantor」というキーワードに一致するトークンが1つ、コロンのトークンが1つ、そしてPersonという固有表現の繰り返しトークン (人名は複数の語から成り、各語が個別のトークンとなり得るため繰り返しに指定) で構成されています。
このテンプレートは「Grantor: Anne Smith」のようなテキスト文字列に一致し、変数 p に「Anne Smith」を代入します。
この部分で使用している構文の詳細は、Token templateを参照してください。
ルール内ですでに参照されているオブジェクトに対して、さらに条件をチェックします。
例
たとえば、契約の当事者を特定したく、field を各当事者ごとに 2 つの別個のグループインスタンスにまとめたとします。組織名と住所が見つかったら、これらの検索要素が同じ親を持つかどうかを確認できます。そうであれば、その住所はその組織に属していることを意味します。
この部分で使用されている構文の詳細は、Additional checkを参照してください。
右側部分は、グループと検索要素の新しいインスタンスを作成し、検索要素に値を割り当てる、カンマ区切りの1つまたは複数のパートで構成されます。
通常、規則の左辺はトークン、トークン列、またはオブジェクトを見つけて変数に代入します。次に、右辺ではこの変数を用いて、その値を検索要素のいずれかに書き込むことができます。たとえば、次のコードは t の値を Element1 の検索要素に書き込みます。
この部分で使用される構文の詳細は、右側部分を参照してください。
コードで作成できるのは、Extraction Rules アクティビティ内に既に存在する検索要素およびグループ検索要素のインスタンスのみです。コードによって新しい検索要素を作成することはできません。構造内に検索要素を追加するには、Activity Editor のSearch Elementsタブを使用してください。
コードで検索要素にアクセスするには、その要素を一意に識別できる名前を使用する必要があります。要素に固有の名前がある場合は、その名前だけで参照できます。同じ名前の要素が複数ある場合は、その要素を識別できるよう十分な長さのパスを指定する必要があります。
次のような検索要素のネスト構造を考えます:
コードで買い手の氏名を参照するには、同名の要素が一意であるため、単に「FullName」を使用できます。「Buyer.FullName」や「Root.Buyer.FullName」でも同様に機能します。
買い手の住所を参照するには、「Address」という要素が2つあるため、少なくとも親グループ名を付ける必要があります。ここでは「Buyer.Address」または「Root.Buyer.Address」を使用してください。
ルールを実行する対象のDocumentの言語を指定できます。指定した場合、他の言語ではそのルールはスキップされます。ルールの前にハッシュ (#) と2文字の言語コード (ISO 639-1) を付けてください。
| 言語 | コード |
|---|
| 英語 | en |
| ドイツ語 | de |
| フランス語 | fr |
| スペイン語 | es |
| イタリア語 | it |
| ポルトガル語 (標準) | pt |
| 日本語 | ja |
| ロシア語 | ru |
例えば、英語とスペイン語のDocumentを処理する場合、言語別のキーワードを使用するとよいでしょう。