| 标记(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” 为前缀:NERPerson、NEROrganization、NERAddress、NERLocation、NERDate、NERDuration、NERMoney;搜索元素;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 个标记。这可能比 * 更有用,因为您可以限定这两个关键字之间的距离不会太大。 | | |