python - 如何使用 nltk.Regexp.parser() 解析自定义标签

标签 python regex parsing nltk

我的问题类似于这个未回答的问题:Using custom POS tags for NLTK chunking? ,但我得到的错误是不同的。我正在尝试解析添加了我自己的域特定标签的句子。

例如:

(u'greatest', 'P'), (u'internet', 'NN'), (u'ever', 'A'), 
(u',', ','), (u'and', 'CC'), (u'its', 'PRP$'), (u'being', 'VBG'), 
(u'slow', 'N'), (u'as', 'IN'), (u'hell', 'NN')`

其中 (u'slow', 'N') 是自定义标记 'N'

我正在尝试使用以下方法解析它:

grammar=r"""
Chunk:`{<A>?*<P>+}`
"""
parser=nltk.RegexpParser(grammar)

但是我收到以下错误:

ValueError: Illegal chunk pattern: `{<A>?*<P>+}`

nltk.RegexpParser 是否处理自定义标签?有没有其他基于 nltk 或 python 的解析器可以做到这一点?

最佳答案

nltk.RegexpParser 可以处理自定义标签。

以下是修改代码使其工作的方法:

# Import the RegexpParser
from nltk.chunk import RegexpParser

# Define your custom tagged data. 
tags = [(u'greatest', 'P'), (u'internet', 'NN'), (u'ever', 'A'), 
(u',', ','), (u'and', 'CC'), (u'its', 'PRP$'), (u'being', 'VBG'), 
(u'slow', 'N'), (u'as', 'IN'), (u'hell', 'NN')]

# Define your custom grammar (modified to be a valid regex).
grammar = """ CHUNK: {<A>*<P>+} """

# Create an instance of your custom parser.
custom_tag_parser = RegexpParser(grammar)

# Parse!
custom_tag_parser.parse(tags)

这是您将获得的测试数据的结果:

Tree('S', [Tree('CHUNK', [(u'greatest', 'P')]), (u'internet', 'NN'), (u'ever', 'A'), (u',', ','), (u'and', 'CC'), (u'its', 'PRP$'), (u'being', 'VBG'), (u'slow', 'N'), (u'as', 'IN'), (u'hell', 'NN')])

关于python - 如何使用 nltk.Regexp.parser() 解析自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975573/

相关文章:

python - _csv.错误: field larger than field limit (131072)

regex - 为什么 strsplit 返回一个列表

python - 如何使用 css_parser 获取此属性?

Python 自定义日期时间(?)格式处理

python - 在 Heroku 上部署 Flask 应用程序 - web1 :crashed

python - tf.reset_default_graph 内存泄漏

javascript - 我怎样才能在javascript(jquery?

javascript - 如何在 Javascript 中使用正则表达式获取匹配和未命中的数组?

java - 如何使用前瞻和后视来创建自定义边界匹配器?

java - 如何在 GUI 中生成随机数?