メインコンテンツへスキップ
各検索要素ごとに、Extraction Rules アクティビティのコードには順次実行される一連のルールが含まれます。各ルールは2つの部分で構成され、末尾はセミコロンで終わります。
左辺部分
=>
右辺部分;
左側は条件を判定するか、条件を満たす値を抽出します。右側は新しい検索要素のインスタンスを作成し、そこにその値を割り当てます。

次の単純なルールは、キーワード「Contract」を含む検索要素 kw_Contract を検出します。
[ t: "Contract" ] // "Contract"という単語を検索し、トークンをtという新しい変数に割り当てる
=>
kw_Contract( t ); // "Contract"という単語が出現するたびに、kw_Contract検索要素の新しいインスタンスを作成する

左側部分の構成

左側部分は最大3つの部位で構成されています。
存在条件
トークンテンプレート
追加チェック
  1. 存在条件(任意):指定した属性を持つオブジェクトを検索します。オブジェクトが存在する場合は、同じルール内で再利用できるよう、そのオブジェクトに名前を割り当てることを推奨します。条件では、オブジェクトの不存在を指定することもできます。

SellerName 検索要素のインスタンスを 1 件だけ検出したい場合は、ルールの先頭で、まだインスタンスが検出されていないことを指定します。
~SellerName // SellerName検索要素がまだ検出されていないことを確認します
否定条件を使用する場合は、変数名を割り当てられません。否定条件はオブジェクトが存在しないことを意味するためです。 この条件は、address という名前の固有表現が存在するかを確認します。
a: NERAddress // 住所という名前付きエンティティの存在を確認し、aという新しい変数に割り当てます
この部分で使用される構文の詳細は、Existence conditionを参照してください。
  1. トークン テンプレート(必須):トークンの列で構成されます。トークンとは、自然言語の単語または句読点を指します。通常、トークンにスペースは含まれませんが、単一の語として扱われる表現の内部にスペースが含まれるまれなケースがあります(例:such asa lot)。

たとえば、次のトークンテンプレートは、「Grantor」というキーワードに一致するトークンが1つ、コロンのトークンが1つ、そしてPersonという固有表現の繰り返しトークン(人名は複数の語から成り、各語が個別のトークンとなり得るため繰り返しに指定)で構成されています。
["Grantor"] [":"] [p: @NERPerson]+
このテンプレートは「Grantor: Anne Smith」のようなテキスト文字列に一致し、変数 p に「Anne Smith」を代入します。 この部分で使用している構文の詳細は、Token templateを参照してください。
  1. 追加チェック(任意):ルール内ですでに言及されているオブジェクトに対して、さらに条件を確認します。

たとえば、契約の当事者を特定したく、field を各当事者ごとに 2 つの別個のグループインスタンスにまとめたとします。組織名と住所が見つかったら、これらの検索要素が同じ親を持つかどうかを確認できます。そうであれば、その住所はその組織に属していることを意味します。
n: Party.OrgName // 組織名検索要素は既に検出されています
[ a: @Party.Address ] // 住所検索要素が検出されたトークンを検索します
// 組織名と住所の検索要素が
// 同一のPartyグループ要素インスタンスの子要素であることを確認します
parent( n ) == parent( obj( a ) )
この部分で使用されている構文の詳細は、Additional checkを参照してください。

右側部分の構造

右側部分は、グループと検索要素の新しいインスタンスを作成し、検索要素に値を割り当てる、カンマ区切りの1つまたは複数のパートで構成されます。
グループAを作成,
要素Bを作成して値を割り当てる
通常、規則の左辺はトークン、トークン列、またはオブジェクトを見つけて変数に代入します。次に、右辺ではこの変数を用いて、その値を検索要素のいずれかに書き込むことができます。たとえば、次のコードは t の値を Element1 の検索要素に書き込みます。

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
この部分で使用される構文の詳細は、Right-hand partを参照してください。 注: コードで作成できるのは、Extraction Rules アクティビティ内に既に存在する検索要素およびグループ検索要素のインスタンスのみです。コードによって新しい検索要素を作成することはできません。構造内に検索要素を追加するには、Activity Editor のSearch Elementsタブを使用してください。

検索要素の参照

コードで検索要素にアクセスするには、その要素を一意に識別できる名前を使用する必要があります。要素に固有の名前がある場合は、その名前だけで参照できます。同じ名前の要素が複数ある場合は、その要素を識別できるよう十分な長さのパスを指定する必要があります。

次のような検索要素のネスト構造を考えます:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
コードで買い手の氏名を参照するには、同名の要素が一意であるため、単に「FullName」を使用できます。「Buyer.FullName」や「Root.Buyer.FullName」でも同様に機能します。 買い手の住所を参照するには、「Address」という要素が2つあるため、少なくとも親グループ名を付ける必要があります。ここでは「Buyer.Address」または「Root.Buyer.Address」を使用してください。

言語別ルール

ルールを実行する対象のDocumentの言語を指定できます。指定した場合、他の言語ではそのルールはスキップされます。ルールの前にハッシュ(#)と2文字の言語コード(ISO 639-1)を付けてください。

サポートされている言語のコード

言語コード
Englishen
Germande
Frenchfr
Spanishes
Italianit
Portuguese (Standard)pt
Japaneseja
Russianru
例えば、英語とスペイン語のDocumentを処理する場合、言語別のキーワードを使用することを検討してください。

#en
[ t: "Grantor" ] // 英語文書のキーワード
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // スペイン語文書のキーワード
=>
kw_landlord( t );