跳轉到主要內容
運算語法說明範例
標記(token)[]方括號用來括住單一標記。[] 任意一個詞或標點符號。
標記文字(token text)""引號用來表示具有指定文字內容的標記。["Grantor"] 文本為 “Grantor” 的標記。
變數(variable):冒號用於為其後的標記序列指定名稱。**注意:**該變數僅在同一規則內可用,也就是說,只在右側部分以分號結束之前有效。[t: "Contract"] 尋找包含單詞 “Contract” 的 token,並將其指派給變數 t。
詞元(lemma)L"word" Lemma"word"在單字前加上「L」或「Lemma」表示搜尋時應找到該單字的所有詞形變化。[L"rule"] 會找到 “rule”、“rules”、“ruled” 和 “ruling” 等所有詞形的標記。
正規表示式/regular expression/以單一正斜線將正規表示式括起來。與 Value from Regular Expression 搜尋元素相同,使用 PCRE2 正規表示式語法。`/[1]?\d:\d2\s+(([ap].m.)([AP]M))?/` 此範本會比對 12 小時制的時間,例如「2:00 p.m.」、「9:34 AM」。
正規表示式選項/regular expression/i選項設定 可以放在結束該正規表示式的斜線之後。例如,“i” 選項表示不分大小寫地比對正規表示式。/[1]?\d:\d{2}\s+([ap]\.?m\.?)?/i 此範本透過不區分大小寫的比對,簡化了上述範例。它會比對 12 小時制格式的時間,例如 “2:00 p.m.”、“9:34 AM”。
標記述詞(token predicates)<first_in_paragraph>該標記位於段落的起首。["Section" <first_in_paragraph>] 字詞 “Section” 出現在段落開頭。舉例來說,你可以利用這個條件來擷取緊接在此標記之後的章節編號。
標記述詞(token predicates)<punctuator>該標記是一個標點符號。["Tenant"] [<punctuator>]{0,2} 單字 “Tenant” 之後可以接續最多兩個標點符號,例如一個右括號和一個逗號。
標記述詞(token predicates)<initial_letter_capitalized>該標記的第一個字母為大寫。[L"agreement" <initial_letter_capitalized>] 此範本會匹配 “Agreement” 和 “Agreements”,但不會匹配 “agreement”。
標記述詞(token predicates)<mixed_capitalization>該標記中有部分(但非全部)字母為大寫。[L"letter" <mixed_capitalization>] 此模板將會比對,例如 “Letters” 和 “letteR”。
標記述詞(token predicates)<all_letters_capitalized>該標記全部字母皆為大寫。[t: @NEROrganization <all_letters_capitalized>]+ 此範本會比對所有以全大寫字母表示的組織類命名實體。
邏輯 OR``垂直線用來指定替代的標記文字或標記的替代條件。`[“Lender""Co-Lender”] [“shall”] [“have”]` 此範本會比對以下任一字串:「Lender shall have」或「Co-Lender shall have」。
邏輯 AND空白字元空白字元用作標記條件之間的邏輯連接符。[t: "Section" <first_in_paragraph>] 尋找同時包含字詞 “Section” 且位於段落開頭的 token。
物件條件(object condition)@object_name@ 符號(”@“)會檢查該 token 是否位於物件範圍內。支援下列物件:具名實體物件(Named entity objects),其類型與可作為特殊搜尋元素使用的類型相同,並以 “NER” 作為前綴:NERPersonNEROrganizationNERAddressNERLocationNERDateNERDurationNERMoney;搜尋元素(Search elements);Sentence —— 在文字流中的每個句子都會建立一個獨立的物件;Paragraph —— 在文字流中的每個段落都會建立一個獨立的物件。[t: @NEROrganization]+ ["Lender"] 將名稱 t 指派給包含 NEROrganization 實體且後接關鍵字 “Lender” 的 token 序列。[t: @NERPerson @Preamble_Segment ]+ 在前言區段中尋找人名(由 Input field 搜尋元素表示)。
區分相似物件@object_name( same )「same」表示在重複的標記上,會將同一個物件比對到這一串標記,而不是比對為多個此類型的物件。若物件條件中使用邏輯 OR,則不應使用「same」。例如,如果您有一份人名依序排列的清單,這些名稱都會被偵測為 NERPerson。若要一次只擷取一個人名,請使用「same」條件。[t: @NERPerson( same )]+ 會將名稱 t 指派給找到的第一個人名。
相對位置@object_name( right_to( another_object )) @object_name( left_to( another_object ))”right_to” 表示 object_name 出現在括號中指定的 another_object 之後。“left_to” 表示 object_name 出現在括號中指定的 another_object 之前。[ t: @NERAddress( same, right_to( id1 ), left_to( id2 ) )] 尋找位於 id1 和 id2 之間的 NERAddress 命名實體。
邏輯 OR(用於物件條件)``垂直線也可用作物件條件之間的邏輯「或」(OR)。`[t: @NERPerson( right_to( id1 )right_to( id2 ) )]` 將名稱 t 指派給出現在 id1 或 id2 右側的個人姓名。
權杖序列空白序列中的權杖以空白字元分隔。["Grantor"] [":"] 此範本會匹配「Grantor:」。標記可以僅為了提供語境而被指定,即使不需要擷取這些字詞本身。
替代的權杖序列`[token1]([token2][token3])`使用垂直線來指定可替代的權杖序列。括號用來設定優先順序。`[“will”] ([“start”]([“take”] [“place”])) [“on”] 此範本會符合下列任一字串:"will start on" 或 "will take place on"。請注意,如果我們省略括號,範本也會符合 "will start place on"。括號可確保 "take place" 這個片語不是完整出現,就是完全不出現。 **注意:** 對於實務中較為複雜的替代權杖序列情況,為每個替代選項分別撰寫一條規則可能會更方便:[“will”] [“start”] [“on”] => …; [“will”] [“take”] [“place”] [“on”] => …;`
可選權杖[]?問號表示該權杖是可選的。["Tenant"] ["."]? 詞語 “Tenant” 後面可以接一個句點。
可選且可重複的權杖[]*星號表示該權杖是可選的,且可以重複多次出現。["Grantor"] []* ["Tenant"] 關鍵字 “Grantor” 和 “Tenant” 之間可以有任意數量的標記,也可以沒有任何標記。
必須重複出現的權杖[]+加號表示該權杖至少要出現一次,且可以重複出現。[@NERPerson]+ 指定必須找到至少一個人名,且可能會跨越多個標記(token),因為人名通常由多個詞組成。
具有指定重複次數的權杖[]{n,} []{n,m}大括號中的數字表示該 token 應重複 n 到 m 次。如果未指定第二個數字,則該 token 至少必須重複 n 次。**注意:**可以看到,{0,} 等同於 *,而 {1,} 等同於 +["Grantor"] []{1,3} ["Tenant"] 關鍵字「Grantor」和「Tenant」之間應以 1 到 3 個 token 分隔。這可能比 * 更實用,因為這樣可以指定這兩個關鍵字之間的距離不要太遠。