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

标签 regex nltk grammar

我有2句话:

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

我想选择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)

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

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

最佳答案

在这种情况下,需要将逗号移出 {}:

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

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

关于regex - 如何编写 nltk 语法来检查但不捕获某些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46214001/

相关文章:

ios - NSRegularExpression 不匹配数字符号 (#)

python - 如何使用 nltk 正则表达式模式来提取特定的短语 block ?

language-agnostic - String.Format 中的适当文章 (a/an)

java - ANTLR4 生成不正确的 java 代码

programming-languages - 是否有任何工具可以根据自定义语法生成 UML 图?

javascript - 正数正则表达式 + 大于零的小数 (0.1)

regex - 按正则表达式过滤示例

java - 如何在json字符串java中的数字之间留一个空格?

python - 如何用Python检查一个单词是否是英文单词?

python - 如何展平解析树并存储在字符串中以进行进一步的字符串操作python nltk