如何解释子句的 tregex

How to interpret tregex for clauses

我正在查看 L2 Syntactic Complexity Analyzer

的源代码

它有一个子句的 tregex 表达式为:

S|SINV|SQ [> ROOT <, (VP <# VB) | <# MD|VBZ|VBP|VBD | < (VP [<# MD|VBP|VBZ|VBD | < CC < (VP <# MD|VBP|VBZ|VBD)])]

我正在阅读此 link 中的 tregex 语法,但不确定我是否正确理解 Boolean relational operators,特别是此 tregex 的第二部分:

VP [<# MD|VBP|VBZ|VBD | < CC < (VP <# MD|VBP|VBZ|VBD)]

平均值

(VP <# MD|VBP|VBZ|VBD) OR ((VP < CC) AND (VP < (VP <# MD|VBP|VBZ|VBD)))

同时包含 cc 和 vp 的动词短语(带有 md vbp vbz vbd)

(VP <# MD|VBP|VBZ|VBD) OR (VP < (CC < (VP <# MD|VBP|VBZ|VBD)))

包含 cc 的动词短语包含 vp

克里斯的回答是正确的...

完整幻灯片在这里:

https://nlp.stanford.edu/software/tregex/The_Wonderful_World_of_Tregex.ppt

在 tregex(遵循早期的 tgrep 语言)中,子句 A op B op C op D 始终表示 A op B AND A op C AND A op D。如果您想要相反的结果,则需要像示例 1 中那样使用括号:A op (B op (C op D))。因此在原始消息的第二个析取中,VP 必须包含一个 CC 和另一个以指定词性的词为首的 VP(<# 是 "headed by" 关系)。所以答案基本上是前一种解释,增加了一个约束,即第二个析取的每个合取中的第一个 VP 必须是相同的 VP 节点。