2ku-bot-message-parser

a simple NLP tool for chatbots to extract data from user input

Usage no npm install needed!

<script type="module">
  import kuBotMessageParser from 'https://cdn.skypack.dev/2ku-bot-message-parser';
</script>

README

bot-message-parser

a simple tool for chatbots to extract useful data from user input.

operation

Create a new BotMessageParser object.

const BotMessageParser = require("bot-message-parser")

const parser = new BotMessageParser({ 
    debug: false,
    useCompromise: false,
    commandPrefix: "/",
    namesList: [
        "ryan forever",
        "alice springs"
    ]
});

parser.process(text).then(console.log)

.process() is an async function and will produce the following outputs:

.raw: the original text

.text: the original text, flattned to lower case

.clean: text cleaned of any punctuation, flattened to lowercase, and the dictionary mappings applied.

trigger: the parsed trigger (i.e. !bot or !command, etc)

.hasTrigger: true if message contains a trigger

.triggerOnly: true if the message contains just the trigger

.yes: boolean if user says something like "yes", "yeah", "yep", etc

.no: boolean if user says something like "no", "nah", "hell no", etc

.maybe: boolean if user says something like "maybe", "not sure", "possibly", etc

.idk: boolean if user says something like "idk", "i dont know", "no idea". etc

.what: boolean if user says something like "what?", "huh?","i dont understand", etc

arguments: converts the message string into an array that can be useful for getting arguments

names: returns an array of found names, if a namesList is specified in settings

intent: NLP ONLY intent of the message

numEntities: NLP ONLY number of entities found

entities: NLP ONLY an array of entities

sentiment: NLP ONLY sentiment of the message (positive, negative, or neutral)

compromise

in the options, if you set useCompromise to true, you can activate the nlp processing from compromise

this will search for sever useful things in the message, such as hashtags, urls, emails, phoneNumbers, verbs, and nouns

nlp-js

currently, this this uses nlp-js v3.10.0. if you train a model using this module, you can specify a path to it in the options.

output


/*

{
  id: undefined,
  type: undefined,
  timestamp: undefined,
  raw: '/bot hello there? my name is ryan forever.  do you know ALICE SPRINGS?',
  text: 'hello there? my name is ryan forever.  do you know ALICE SPRINGS?',
  clean: 'hello there my name is ryan forever do you know alice springs',
  attachments: undefined,
  command: 'bot',
  commandRaw: '/bot',
  hasCommand: true,
  commandOnly: false,
  botMentioned: undefined,
  yes: undefined,
  no: undefined,
  maybe: undefined,
  idk: undefined,
  what: undefined,
  arguments: [
    'hello',   'there',
    'my',      'name',
    'is',      'ryan',
    'forever', 'do',
    'you',     'know',
    'alice',   'springs'
  ],
  names: [ 'ryan forever', 'alice springs' ],
  hasIntent: undefined,
  intent: undefined,
  numEntities: 0,
  entities: [],
  sentiment: undefined,
  hashtags: [],
  urls: [],
  emails: [],
  phoneNumbers: [],
  verbs: [],
  nouns: []
}

*/