如何编写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><,>}
"""
在这种情况下,系统将完全满足我的需要。
我有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><,>}
"""
在这种情况下,系统将完全满足我的需要。