Skip to main content

A natural language semantic parser

Project description

===============================================
Parsetron - A natural language semantic parser
===============================================

.. pypi version and download:
.. image:: https://pypip.in/d/parsetron/badge.png
:target: https://pypi.python.org/pypi/parsetron

.. image:: https://travis-ci.org/Kitt-AI/parsetron.svg?branch=develop
:target: https://travis-ci.org/Kitt-AI/parsetron

.. image:: https://coveralls.io/repos/Kitt-AI/parsetron/badge.svg?branch=develop
:target: https://coveralls.io/r/Kitt-AI/parsetron?branch=develop

.. image:: https://readthedocs.org/projects/parsetron/badge/?version=latest
:alt: Documentation Status
:scale: 100%
:target: https://readthedocs.org/projects/parsetron/


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:

.. code-block:: python

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 <https://pyparsing.wikispaces.com/>`_.

Grammar Modules
---------------

Parsetron supports modularized grammars: each grammar focuses on an individual
small domain and can be imported via, for instance:

.. code-block:: python

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

1. fork this repository
2. install dev-specific packages::

pip install -r requirements.txt

3. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parsetron-0.1.1.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

parsetron-0.1.1-py2.py3-none-any.whl (35.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file parsetron-0.1.1.tar.gz.

File metadata

  • Download URL: parsetron-0.1.1.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for parsetron-0.1.1.tar.gz
Algorithm Hash digest
SHA256 97324cec1bfc011e0728640fe16d46ee2cf064253863c7174aa5a8d329ffa980
MD5 24cee8fe079670c12ff1897fcccb2b80
BLAKE2b-256 5d85aa5a6c53471386f6d7a8502d6a172e146807cccd3026825d374a1f4f4888

See more details on using hashes here.

File details

Details for the file parsetron-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for parsetron-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 769c21a4d3ae3434bdb5b74b82da4d9f87fe76f9e967830100ceddf946ae2b33
MD5 aff9f3001349d7e40109927358b60426
BLAKE2b-256 8e1274a09e3a6bb03d8f926e2f58302276adfb23a9fe3def0d527021f0f22ec0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page