跳转到主要内容
操作语法说明示例
标记(token)[]用方括号括起单个标记。[] 任何词或标点符号。
标记文本""引号表示具有特定文本内容的标记。["Grantor"] 文本为 “Grantor” 的标记。
变量:冒号用于为其后面的标记序列指定名称。注意: 该变量仅在同一条规则内可用,也就是说,只在该规则右侧部分以分号结束之前有效。[t: "Contract"] 查找一个包含单词 “Contract” 的标记,并将其赋给变量 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”。
标记谓词<first_in_paragraph>此标记位于段落开头。["Section" <first_in_paragraph>] 单词 “Section” 出现在段落开头。可以利用这一点,例如提取紧随该标记之后的章节编号。
标记谓词<punctuator>此标记为标点符号。["Tenant"] [<punctuator>]{0,2} 单词 “Tenant” 后面可以跟随至多两个标点符号,例如右括号和逗号。
标记谓词<initial_letter_capitalized>此标记以大写字母开头。[L"agreement" <initial_letter_capitalized>] 此模板会匹配 “Agreement” 和 “Agreements”,但不会匹配 “agreement”。
标记谓词<mixed_capitalization>此标记中仅部分字母为大写,且并非全部大写。[L"letter" <mixed_capitalization>] 此模板将匹配诸如 “Letters” 和 “letteR” 之类的内容。
标记谓词<all_letters_capitalized>此标记全部由大写字母组成。[t: @NEROrganization <all_letters_capitalized>]+ 此模板将匹配全部字母都为大写的组织类命名实体。
逻辑 OR``竖线用于在标记文本或标记条件之间指定备选项。`[“Lender""Co-Lender”] [“shall”] [“have”]` 此模式将匹配下列任一字符串:“Lender shall have” 或 “Co-Lender shall have”。
逻辑 AND空格空格用作标记条件之间的逻辑与(AND)连接符。[t: "Section" <first_in_paragraph>] 查找一个 token,该 token 包含单词 “Section”,并且位于段落开头。
对象条件@object_name“@” 符号用于检查标记是否位于某个对象区域内。支持以下对象:命名实体对象,与也可用作专用搜索元素的类型相同,并以 “NER” 为前缀:NERPersonNEROrganizationNERAddressNERLocationNERDateNERDurationNERMoney;搜索元素;Sentence - 对文本流中的每个句子创建一个独立对象;Paragraph - 对文本流中的每个段落创建一个独立对象。[t: @NEROrganization]+ ["Lender"] 将名称 t 分配给包含 NEROrganization 实体且后面跟有关键字 “Lender” 的标记序列。[t: @NERPerson @Preamble_Segment ]+ 在序言段中查找人名(由 Input 字段 搜索元素表示)。
相似对象的区分@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(在对象条件中的用法)``竖线还可在对象条件中用作逻辑析取(逻辑或)运算符。`[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" 要么完整出现,要么完全不出现。 **注意:** 对于实际中更复杂的备选 token 序列,为每种备选方案分别编写一条规则可能更方便:[“will”] [“start”] [“on”] => …; [“will”] [“take”] [“place”] [“on”] => …;`
可选标记[]?问号表示该标记为可选。["Tenant"] ["."]? 单词 “Tenant” 后面可以带一个句点。
可选且可重复的标记[]*星号表示该标记为可选,并且可以出现多次。["Grantor"] []* ["Tenant"] 关键字 “Grantor” 和 “Tenant” 之间可以有任意数量的标记,也可以没有。
必选且可重复的标记[]+加号表示该标记至少需要出现一次,并且可以重复。[@NERPerson]+ 指定应匹配一个人名,可能跨越多个标记,因为人名通常由多个词组成。
具有指定重复次数的标记[]{n,} []{n,m}花括号中的数字表示该标记需要重复 n 到 m 次。如果未指定第二个数字,则该标记应至少重复 n 次。**注意:**可以看到,{0,} 等同于 *,而 {1,} 等同于 +["Grantor"] []{1,3} ["Tenant"] 关键字 “Grantor” 和 “Tenant” 之间应相隔 1 到 3 个标记。这可能比 * 更有用,因为您可以限定这两个关键字之间的距离不会太大。