如何使用分析自定义标记nltk.Regexp.parser()

2024-05-20 00:01:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题类似于这个未回答的问题: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'。在

我试图用以下方法来解析:

^{pr2}$

但我得到了以下错误:

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

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


Tags: 标记posfor错误customtagsnn标签
2条回答

在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)

这是测试数据的结果:

^{pr2}$

我不熟悉NTLK,但在Python正则表达式中,?*是一个语法错误。也许你指的是*?,这是一个懒惰的量词。在

相关问题 更多 >