Skip to content

patriciamdr/nlp-intent-toolkit

 
 

Repository files navigation

nlp-intent-toolkit

Recognizing intents with slots using OpenNLP for applications (such as bots using chat, IM, speech-to-text) to convert natural language into structured commands with arguments.

> What's the current stock price of General Motors?
{ action: 'stock-price', args: { company: 'General Motors' } }

The example system uses document categorization to determine the intent (command) and entity recognition to determine the slots (arguments) of the natural language text input.

The training system uses a directory containing separate files for each possible action, in this case the actions in a fictitious weather application:

- example/weather/train
  - current-weather.txt - get the current weather
  - hourly-forecast.txt - get the hourly forcast
  - five-day-forecast.txt - get a five day forecast

Each training file contains one example per line with any possible arguments surrounded by mark up to indicate the name of the parameter:

file: five-day-forecast.txt
...
how does the weather look for this Thursday in <START:city> Boston <END> ?
is it going to snow this week in <START:city> Chicago <END>
show me the forecast for <START:city> Denver <END>
...

Running the Example

The training systems is run passing in the training file directory and any parameter name used in the training files.

$ mvn clean compile exec:java  -Dexec.args="example/weather/train city"
...
Training complete. Ready.

>show me the weather for chicago
{ action: 'current-weather', args: { city: 'chicago' } }

>will it rain tonight?
{ action: 'hourly-forecast', args: { } }

>how does it look in seattle
{ action: 'hourly-forecast', args: { city: 'seattle' } }

>what are the conditions in new york?
{ action: 'current-weather', args: { city: 'new york' } }

>how does this weekend look in boston
{ action: 'five-day-forecast', args: { city: 'boston' } }

>give me the five day forecast
{ action: 'five-day-forecast', args: { } }

Copyright and License

The source code provided by this repository is free and unencumbered to be copied or modified for any purpose, commercial or non-commercial. The full license text is provided in the LICENSE file accompanying this repository.

About

Intent recognition with OpenNLP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 84.3%
  • Python 15.7%