메인 콘텐츠로 건너뛰기
각 검색 요소에 대해 Extraction Rules 활동의 코드에는 순차적으로 실행되는 일련의 규칙이 정의됩니다. 각 규칙은 두 부분으로 구성되며, 세미콜론으로 끝납니다:
Left-hand part
=>
Right-hand part;
왼쪽 부분은 조건을 확인하거나 조건을 만족하는 값을 찾습니다. 오른쪽 부분은 새로운 검색 요소 인스턴스를 생성하고 해당 값들을 그 인스턴스에 할당합니다.

예시

다음은 키워드 “Contract”를 포함하는 검색 요소 kw_Contract를 찾는 간단한 규칙입니다:
[ t: "Contract" ] // looking for a word "Contract" and assigning the token to a new variable called t
=>
kw_Contract( t ); // "Contract"라는 단어가 반복될 때마다 kw_Contract 검색 요소의 새 인스턴스를 생성합니다

왼쪽 영역 구조

왼쪽 영역은 최대 세 가지 구성 요소로 이루어져 있습니다.
Existence_condition
Token_template
Additional_check

존재 조건 (선택 사항)

지정된 속성을 가진 객체를 찾습니다. 해당 객체가 존재하는 경우, 같은 규칙 내에서 다시 사용할 수 있도록 객체에 이름을 지정할 것을 권장합니다. 이 조건은 객체가 존재하지 않는 경우를 지정하는 데에도 사용할 수 있습니다. 예시 SellerName 검색 요소의 인스턴스를 하나만 찾으려면, 규칙의 시작 부분에서 아직 어떤 인스턴스도 발견되지 않았다고 먼저 지정합니다:
~SellerName // SellerName 검색 요소가 아직 발견되지 않았는지 확인
주의. 부정 조건을 사용할 때는 변수 이름을 지정할 수 없습니다. 부정 조건은 객체가 존재하지 않음을 의미하기 때문입니다.
이 조건은 address라는 명명 엔터티(named entity)의 존재 여부를 확인합니다:
a: NERAddress // 주소 개체명의 존재를 확인하고 a라는 새 변수에 할당합니다
이 부분에서 사용하는 구문에 대한 자세한 내용은 Existence condition을 참조하세요.

토큰 템플릿 (필수)

토큰 시퀀스로 구성됩니다. 토큰은 자연어의 단어나 문장 부호입니다. 토큰에는 일반적으로 공백이 포함되지 않지만, 단일 단어처럼 사용되는 고정된 표현 내부에 공백이 들어가는 드문 경우는 예외입니다(예: such as, a lot). 예시 예를 들어, 다음 토큰 템플릿은 “Grantor” 키워드와 일치하는 하나의 토큰, 콜론이 있는 하나의 토큰, 그리고 Person 명명 개체(named entity)에 해당하는 반복 토큰으로 구성됩니다(사람 이름은 여러 단어로 이루어질 수 있고, 각 단어가 개별 토큰이 되므로 반복으로 지정됩니다).
["Grantor"] [":"] [p: @NERPerson]+
템플릿은 “Grantor: Anne Smith”와 같은 텍스트 문자열을 찾아 값 “Anne Smith”를 변수 p에 할당합니다. 이 부분에서 사용되는 구문에 대한 자세한 내용은 Token template를 참조하세요.

추가 검사 (선택 사항)

규칙에서 이미 언급된 객체에 대해 추가 조건을 검사합니다. 예시 예를 들어 계약 당사자를 찾고 있으며, 각 당사자에 대해 하나씩 field들을 두 개의 별도 그룹 인스턴스로 묶어 두었다고 가정해 보겠습니다. 조직명과 주소를 찾았다면, 이 검색 요소들이 동일한 부모를 가지는지 확인할 수 있습니다. 동일한 부모를 가진다면, 이 주소가 해당 조직에 속한다는 뜻입니다.
n: Party.OrgName // 조직 이름 검색 요소를 이전에 찾았습니다
[ a: @Party.Address ] // 주소 검색 요소가 발견된 토큰을 찾습니다
// 조직 이름과 주소 검색 요소가
// 동일한 Party 그룹 요소 인스턴스의 자식인지 확인합니다
parent( n ) == parent( obj( a ) )
이 부분에서 사용하는 구문에 대한 자세한 내용은 Additional check를 참고하세요.

오른쪽 부분 구조

오른쪽 부분은 쉼표로 구분된 하나 이상의 부분으로 구성되며, 각 부분은 그룹과 검색 요소의 새 인스턴스를 생성하고 검색 요소에 값을 할당합니다:
Create_group_A,
Create_element_B_and_assign_value
일반적으로 규칙의 왼쪽 부분은 토큰, 토큰 시퀀스, 또는 객체를 찾아 변수에 할당합니다. 그런 다음 오른쪽 부분에서는 이 변수를 사용해 그 값을 검색 요소 중 하나에 쓸 수 있습니다. 예를 들어, 다음 코드는 t의 값을 Element1 검색 요소에 기록합니다:

예제

[t: "Lease"] ["Agreement"]
=>
Root.kw_AgreementType( t );
이 부분에서 사용되는 구문에 대한 자세한 내용은 Right-hand part를 참조하세요.
참고: 코드는 Extraction Rules activity에 이미 존재하는 search element 및 group search element의 인스턴스만 생성할 수 있습니다. 코드를 사용해서 새로운 search element를 생성할 수는 없습니다. 구조에 search element를 추가로 생성하려면 Activity Editor에서 Search Elements 탭을 사용하세요.

검색 요소 참조하기

코드에서 검색 요소를 참조하려면 해당 요소를 모호함 없이 식별할 수 있는 이름을 사용해야 합니다. 요소에 고유한 이름이 있는 경우 그 이름만으로 해당 요소를 참조할 수 있습니다. 동일한 이름을 가진 요소가 여러 개 있는 경우 요소를 식별할 수 있을 만큼 충분히 긴 경로를 지정해야 합니다.

예시

다음과 같은 검색 요소의 중첩 구조를 가정해 보겠습니다:
  • Property
    • Type
    • Address
  • Buyer
    • FullName
    • Address
코드에서 구매자의 이름을 참조하려면, 해당 이름을 가진 요소가 유일하므로 단순히 “FullName”만 사용하면 됩니다. “Buyer.FullName” 또는 “Root.Buyer.FullName”도 동일하게 동작합니다. 구매자의 주소를 참조하려면, “Address”라는 이름의 요소가 두 개 있으므로 최소한 상위 그룹 이름을 함께 지정해야 합니다. 이 경우 “Buyer.Address” 또는 “Root.Buyer.Address”를 사용해야 합니다.

언어별 규칙

규칙을 실행할 문서 언어를 지정할 수 있습니다. 이렇게 하면 해당 규칙은 다른 언어의 문서에는 적용되지 않습니다. 규칙 앞에 해시(#) 기호와 두 글자의 언어 코드(ISO-639-1 표준)를 붙이십시오.

지원 언어 코드

언어코드
영어en
독일어de
프랑스어fr
스페인어es
이탈리아어it
포르투갈어(표준)pt
일본어ja
러시아어ru
예를 들어, 영어와 스페인어로 된 문서를 처리하는 경우, 언어별 키워드를 사용할 수 있습니다:

예시

#en
[ t: "Grantor" ] // 영어 문서용 키워드
=>
kw_landlord( t );

#es
[ t: "Arrendador" ] // 스페인어 문서용 키워드
=>
kw_landlord( t );