parsetron 0.1.1

Creator: railscoderz

Last updated:

Add to Cart

Description:

parsetron 0.1.1

A natural language semantic parser

Installation
pip install parsetron
Parsetron is tested under Python 2.7 and Pypy. It doesn’t support Python 3 yet.


Quick Start
The following is a grammar that parses natural language instruction on lights:
from parsetron import Set, Regex, Optional, OneOrMore, Grammar, RobustParser

class LightGrammar(Grammar):

action = Set(['change', 'flash', 'set', 'blink'])
light = Set(['top', 'middle', 'bottom'])
color = Regex(r'(red|yellow|blue|orange|purple|...)')
times = Set(['once', 'twice', 'three times']) | Regex(r'\d+ times')
one_parse = action + light + Optional(times) + color
GOAL = OneOrMore(one_parse)

@staticmethod
def test():
parser = RobustParser((LightGrammar()))
sents = [
"set my top light to red",
"set my top light to red and change middle light to yellow",
"set my top light to red and change middle light to yellow and "
"flash bottom light twice in blue"
]
for sent in sents:
tree, result = parser.parse(sent)
assert result.one_parse[0].color == 'red'

print '"%s"' % sent
print "parse tree:"
print tree
print "parse result:"
print result
print


Dependencies
None. Parsetron is a single parsetron.py file.
Parsetron is inspired by pyparsing.


Grammar Modules
Parsetron supports modularized grammars: each grammar focuses on an individual
small domain and can be imported via, for instance:
from parsetron.grammars.colors import ColorsGrammar

class YourCustomizedGrammar(Grammar):
color = ColorsGrammar.GOAL
You are welcome to contribute your own grammar here (under
parsetron.grammars). Send us a pull request!


Development

fork this repository
install dev-specific packages:
pip install -r requirements.txt

then make your changes and follow the Makefile.



TODO

[ ] Python 3 compatible
[ ] Unicode support



Documentation
The full documentation is at http://parsetron.rtfd.org.


History

0.1.1 (2015-08-24)

ParseResult now supports lex_span() method.



0.1.0 (2015-06-19)

First release on PyPI.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.