Metadata-Version: 2.1
Name: snips-nlu
Version: 0.16.4
Summary: Snips Natural Language Understanding library
Home-page: https://snips-nlu.readthedocs.io
Author: Clement Doumouro, Adrien Ball
Author-email: clement.doumouro@snips.ai, adrien.ball@snips.ai
License: Apache License, Version 2.0
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Provides-Extra: doc
Provides-Extra: test
Provides-Extra: metrics
Requires-Dist: enum34 (<2.0,>=1.1)
Requires-Dist: numpy (==1.14.0)
Requires-Dist: scipy (<2.0,>=1.0)
Requires-Dist: scikit-learn (<0.20,>=0.19)
Requires-Dist: sklearn-crfsuite (<0.4,>=0.3.6)
Requires-Dist: semantic-version (<3.0,>=2.6)
Requires-Dist: snips-nlu-utils (<0.7,>=0.6.1)
Requires-Dist: snips-nlu-ontology (==0.57.3)
Requires-Dist: num2words (<0.6,>=0.5.6)
Requires-Dist: plac (<1.0,>=0.9.6)
Requires-Dist: requests (<3.0,>=2.0)
Requires-Dist: pathlib (==1.0.1); python_version < "3.4"
Provides-Extra: doc
Requires-Dist: sphinx (<2.0,>=1.7); extra == 'doc'
Requires-Dist: sphinxcontrib-napoleon (<0.7,>=0.6.1); extra == 'doc'
Requires-Dist: sphinx-rtd-theme (<0.3,>=0.2.4); extra == 'doc'
Provides-Extra: metrics
Requires-Dist: snips-nlu-metrics (<0.14,>=0.13); extra == 'metrics'
Provides-Extra: test
Requires-Dist: mock (<3.0,>=2.0); extra == 'test'
Requires-Dist: snips-nlu-metrics (<0.14,>=0.13); extra == 'test'
Requires-Dist: pylint (<2.0,>=1.8); extra == 'test'
Requires-Dist: coverage (<5.0,>=4.4.2); extra == 'test'

Snips NLU
=========

.. image:: https://travis-ci.org/snipsco/snips-nlu.svg?branch=develop
   :target: https://travis-ci.org/snipsco/snips-nlu

.. image:: https://ci.appveyor.com/api/projects/status/github/snipsco/snips-nlu?branch=develop&svg=true
   :target: https://ci.appveyor.com/project/snipsco/snips-nlu

.. image:: https://img.shields.io/pypi/v/snips-nlu.svg?branch=develop
   :target: https://pypi.python.org/pypi/snips-nlu

.. image:: https://img.shields.io/pypi/pyversions/snips-nlu.svg?branch=develop
   :target: https://pypi.python.org/pypi/snips-nlu

.. image:: https://codecov.io/gh/snipsco/snips-nlu/branch/develop/graph/badge.svg
   :target: https://codecov.io/gh/snipsco/snips-nlu

.. image:: https://img.shields.io/twitter/url/http/shields.io.svg?style=social
   :target: https://twitter.com/intent/tweet?text=Extract%20meaning%20from%20text%20with%20Snips%20NLU,%20an%20open%20source%20library%20written%20in%20python%20and%20rust&url=https://github.com/snipsco/snips-nlu&via=snips&hashtags=nlu,nlp,machinelearning,python,rustlang


`Snips NLU <https://snips-nlu.readthedocs.io>`_ (Natural Language Understanding) is a Python library that allows to parse sentences written in natural language and extracts structured information.

Check out our `blog post`_ to get more details about why we built Snips NLU and how it works under the hood.

System requirements
-------------------
- 64-bit Linux, MacOS >= 10.11, 64-bit Windows
- Python 2.7 or Python >= 3.4
- RAM: Snips NLU will typically use between 100MB and 200MB of RAM, depending on the language and the size of the dataset.


Installation
------------

.. code-block:: python

    pip install snips-nlu

We currently have pre-built binaries (wheels) for ``snips-nlu`` and its
dependencies for MacOS (10.11 and later), Linux x86_64 and Windows.

For any other architecture/os `snips-nlu` can be installed from the source
distribution. To do so, `Rust <https://www.rust-lang.org/en-US/install.html>`_
and `setuptools_rust <https://github.com/PyO3/setuptools-rust>`_ must be
installed before running the ``pip install snips-nlu`` command.

Language resources
------------------

Snips NLU relies on `language resources`_ that must be downloaded before the
library can be used. You can fetch resources for a specific language by
running the following command:

.. code-block:: sh

    python -m snips_nlu download en

Or simply:

.. code-block:: sh

    snips-nlu download en

Once the resources have been fetched, they can be loaded in Python using:

.. code-block:: python

    from snips_nlu import load_resources

    load_resources("en")

The list of supported languages is available
`here <https://snips-nlu.readthedocs.io/en/latest/languages.html>`_.

A simple example
----------------

Let’s take an example to illustrate the main purpose of this lib, and consider the following sentence:

.. code-block:: text

    "What will be the weather in paris at 9pm?"

Properly trained, the Snips NLU engine will be able to extract structured data such as:

.. code-block:: json

    {
       "intent": {
          "intentName": "searchWeatherForecast",
          "probability": 0.95
       },
       "slots": [
          {
             "value": "paris",
             "entity": "locality",
             "slotName": "forecast_locality"
          },
          {
             "value": {
                "kind": "InstantTime",
                "value": "2018-02-08 20:00:00 +00:00"
             },
             "entity": "snips/datetime",
             "slotName": "forecast_start_datetime"
          }
       ]
    }


Sample code
-----------

Here is a sample code that you can run on your machine after having
installed `snips-nlu`, fetched the english resources and downloaded this
`sample dataset`_:

.. code-block:: python

    from __future__ import unicode_literals, print_function

    import io
    import json

    from snips_nlu import SnipsNLUEngine, load_resources
    from snips_nlu.default_configs import CONFIG_EN

    with io.open("sample_dataset.json") as f:
        sample_dataset = json.load(f)

    load_resources("en")
    nlu_engine = SnipsNLUEngine(config=CONFIG_EN)
    nlu_engine.fit(sample_dataset)

    text = "What will be the weather in San Francisco next week?"
    parsing = nlu_engine.parse(text)
    print(json.dumps(parsing, indent=2))

What it does is training an NLU engine on a sample weather dataset and parsing
a weather query.

Documentation
-------------

To find out how to use Snips NLU please refer to our `documentation <https://snips-nlu.readthedocs.io>`_, it will provide you with a step-by-step guide on how to use and setup our library.

FAQ
---
Please join our `Discord channel`_ to ask your questions and get feedback from the community.

Links
-----
* `What is Snips about ? <https://snips.ai/>`_
* Snips NLU Open sourcing `blog post`_
* `Snips NLU Language Resources <https://github.com/snipsco/snips-nlu-language-resources>`_
* `Bug tracker <https://github.com/snipsco/snips-nlu/issues>`_
* `Snips NLU Rust <https://github.com/snipsco/snips-nlu-rs>`_: Rust inference pipeline implementation and bindings (C, Swift, Kotlin, Python)
* `Rustling <https://github.com/snipsco/rustling-ontology>`_: Snips NLU builtin entities parser


How do I contribute ?
---------------------

Please see the `Contribution Guidelines <CONTRIBUTING.rst>`_.

Licence
-------

This library is provided by `Snips <https://www.snips.ai>`_ as Open Source software. See `LICENSE <LICENSE>`_ for more information.

.. _language resources: https://github.com/snipsco/snips-nlu-language-resources
.. _sample dataset: snips_nlu_samples/sample_dataset.json
.. _Discord channel: https://discordapp.com/invite/3939Kqx
.. _blog post: https://medium.com/snips-ai/an-introduction-to-snips-nlu-the-open-source-library-behind-snips-embedded-voice-platform-b12b1a60a41a

