如何编写nltk语法来检查但不捕获一些文本

How to write nltk grammar to check but not capture some text

我有2个句子:

procedure, when performed, some other text
procedure, limited, some other text

我想 select VBN 后跟逗号:

import nltk

sents = [
    ['procedure', ',', 'when', 'performed', ',', 'some', 'other', 'text'],
    ['procedure', ',', 'limited', ',', 'some', 'other', 'text']
]
tokens = [nltk.pos_tag(x) for x in sents]

grammar = r"""
  CHUNK: {<VBN><,>}
"""
chunker = nltk.RegexpParser(grammar)

for x in tokens:
    tree = chunker.parse(x)
    print tree

有效:

(S procedure/NN ,/, when/WRB (CHUNK performed/VBN ,/,) some/DT other/JJ text/NN)
(S procedure/NN ,/, (CHUNK limited/VBN ,/,) some/DT other/JJ text/NN)

但我需要 select VBN,当它 用逗号包裹 时。某种 re.compile(r'(?:,)\s*([a-z]+ed),')

RegexpParser语法中有什么方法可以使用(?:...)

在这种情况下需要将逗号向前移出 {}

grammar = r"""
  CHUNK: <,>{<VBN><,>}
"""

在这种情况下,系统将完全满足我的需要。