Regex 在NLTK中分块冒号
我试图在冒号位置分割一个块:在NLTK中,但这似乎是一个特例。在普通正则表达式中,我可以把它放到Regex 在NLTK中分块冒号,regex,nltk,text-chunking,Regex,Nltk,Text Chunking,我试图在冒号位置分割一个块:在NLTK中,但这似乎是一个特例。在普通正则表达式中,我可以把它放到[:]中,没有问题 但是在NLTK中,无论我做什么,它都不喜欢在regexParser中 from nltk import RegexpParser grammar = r""" NP: {<DT|PP\$>?<JJ>*<NN>|<NNP.*><\:><VBD>} # chunk (Rapunzel + : + let
[:]
中,没有问题
但是在NLTK中,无论我做什么,它都不喜欢在regexParser中
from nltk import RegexpParser
grammar = r"""
NP: {<DT|PP\$>?<JJ>*<NN>|<NNP.*><\:><VBD>} # chunk (Rapunzel + : + let) together
{<NNP>+}
<.*>}{<VBD.*>
"""
cp = RegexpParser(grammar)
sentence = [("Rapunzel", "NNP"), (":",":"), ("let", "VBD"), ("down", "RP"), ("her", "PP$"), ("long", "JJ"), ("golden", "JJ"), ("hair", "NN")]
print(cp.parse(sentence))
来自nltk导入RegexpParser
语法=r“”
NP:{?*|}#chunk(莴苣+:+let)在一起
{+}
}{
"""
cp=RegexpParser(语法)
句子=[(“长发公主”、“NNP”)、(“金色”、“JJ”)、(“头发”、“NN”)、(“绒毛”、“RP”)、(“她的”、“PP$”)、(“长发”、“JJ”)、(“金色”、“JJ”)、(“头发”、“NN”)]
打印(cp.parse(句子))
上面的代码确实构成了一个将冒号作为块拾取的块。
}{line在let之前的位置拆分由(rapanzel+:+let)组成的块。
如果您取出该拆分并替换为冒号,则会出现错误
from nltk import RegexpParser
grammar = r"""
NP: {<DT|PP\$>?<JJ>*<NN>|<NNP.*><\:><VBD>} # chunk (Rapunzel + : + let) together
{<NNP>+}
<.*>}{<\:.*>
"""
cp = RegexpParser(grammar)
sentence = [("Rapunzel", "NNP"), (":",":"), ("let", "VBD"), ("down", "RP"), ("her", "PP$"), ("long", "JJ"), ("golden", "JJ"), ("hair", "NN")]
print(cp.parse(sentence))
来自nltk导入RegexpParser
语法=r“”
NP:{?*|}#chunk(莴苣+:+let)在一起
{+}
}{
"""
cp=RegexpParser(语法)
句子=[(“长发公主”、“NNP”)、(“金色”、“JJ”)、(“头发”、“NN”)、(“绒毛”、“RP”)、(“她的”、“PP$”)、(“长发”、“JJ”)、(“金色”、“JJ”)、(“头发”、“NN”)]
打印(cp.parse(句子))
ValueError:非法块模式:>
有人能解释一下怎么做吗?我试过谷歌并浏览了文档,但我一点也不知道。我可以处理这个帖子块没有问题,但我只是知道为什么或者如何处理。:-NLTK似乎将每个块定义的第二个冒号作为开始新块的指标 对于那些遇到相同错误的人,一个解决方法是将多个正则表达式分解为多个同名的块。 假设我们有以下语法:
grammar = r"""
SOME_CHUNK:
{<NN><:>}
{<JJ><:>}
"""
grammar=r”“”
有些人:
{}
{}
"""
要解决此问题,请将其更改为:
grammar = r"""
SOME_CHUNK: {<NN><:>}
SOME_CHUNK: {<JJ><:>}
"""
grammar=r”“”
某些_块:{}
某些_块:{}
"""
不幸的是,如果将chinking正则表达式与另一个冒号一起使用,这将不起作用,如您的示例中所示
为了帮助您解决您的具体问题,请发布一个您正试图解析的确切句子。从您的示例中很难看出您为什么需要
|
部分。好问题!为了让人们帮助您,请给出一个简短(但完整)的代码示例,展示如何使用RegexpParser并获得错误的一个简单示例。