您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 使用parseString时的pyparsing.ParseException(searchString有效)

5b51 2022/1/14 8:21:56 python 字数 3194 阅读 521 来源 www.jb51.cc/python

我正在尝试使用pyparsing解析一些交通违规句子,当我使用grammar.searchString(句子)时它没关系,但是当我使用parseString时抛出ParseException.任何人都可以帮我,请说我的代码出了什么问题?from pyparsing import Or, Literal, oneOf, OneOrMore, nums, alp

概述

我正在尝试使用pyparsing解析一些交通违规句子,当我使用grammar.searchString(句子)时它没关系,但是当我使用parseString时抛出ParseException.任何人都可以帮我,请说我的代码出了什么问题?

from pyparsing import Or,Literal,oneOf,OneOrMore,nums,alphas,Regex,Word,\
    SkipTo,LineEnd,originalTextFor,Optional,ZeroOrMore,Keyword,Group
import pyparsing as pp

from nltk.tag import pos_tag

sentences = ['Failure to control vehicle speed on highway to avoid collision','Failure to stop at stop sign','Introducing additives into special fuel by unauthorized person and contrary to regulations','driver fail to stop at yield sign at nearest pointf approaching traffic view when req. for safety','Operating unregistered motor vehicle on highway','Exceeding maximum speed: 39 MPH in a posted 30 MPH zone']


for sentence in sentences:
    words = pos_tag(sentence.split())
    #print words
    verbs = [word for word,pos in words if pos in ['VB','VBD','VBG']]
    nouns = [word for word,pos in words if pos == 'NN']
    adjectives = [word for word,pos in words if pos == 'JJ']

    adjectives.append('great')  # initializing  
    verbs.append('get') # initializing 


    object_generator = oneOf('for to')
    location_generator = oneOf('at in into on onto over within')
    speed_generator = oneOf('MPH KM/H')

    noun = oneOf(nouns)
    adjective = oneOf(adjectives)

    location = location_generator + pp.Group(Optional(adjective) + noun)

    action = oneOf(verbs)
    speed = Word(nums) + speed_generator

    grammar =  action | location | speed

    parsed = grammar.parseString(sentence)

    print parsed

错误回溯

Traceback (most recent call last): File “script3.py”,line 35,in parsed = grammar.parseString(sentence) File “/Users/alana/anaconda/lib/python2.7/site-packages/pyparsing??.py”,line 1032,in parseString raise exc pyparsing.ParseException: Expected Re:(‘control|avoid|get’) (at char 0),(line:1,col:1)

您可能需要根据NLTK找到的内容打印名词,形容词和动词列表,然后查看它如何映射到您生成的语法.

你也可以尝试使用Python的sum()内置结合句子中多个匹配的结果:

grammar =  action("action") | Group(location)("location") | Group(speed)("speed")

#parsed = grammar.parseString(sentence)
parsed = sum(grammar.searchString(sentence))
print(parsed.dump())

总结

以上是编程之家为你收集整理的python – 使用parseString时的pyparsing.ParseException(searchString有效)全部内容,希望文章能够帮你解决python – 使用parseString时的pyparsing.ParseException(searchString有效)所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶