Introduction
Natural Language Processing (or NLP) is the art of taking human written language (or indeed human spoken language) and analyzing it to use it in some form or fashion. Advances in natural language processing have made it possible to embed human language understanding in software applications. Things as personal assistants and bots are now common-place. The next step is a more integrated approach, the nl-app. An nl-app is architecturally different and has other architectural concerns, but that is for part 2 of this article.Before we start discussing this, we'll take a small detour through existing solutions and why I think there is a difference.
Personal assistants
have been a series of new devices like Alexa, Echo, Google-home, Siri, Bixby and a few others. These are stand-alone devices, usually with their own application API. There is great potential for such devices to interface with the Internet of Things (IoT), ordering online and other use cases. However, these devices aren't great at enhancing existing software products and have their issues. There is a lot of research available on speech-only interfaces. Beeps and sounds are added to the device's "interface" to indicate to the user that a message is understood or not. More modern versions of such devices even have some form of display.I believe it is too early yet for such devices to be mainstream replacing our every day experiences purely from an interface perspective. Perhaps they never intended to do so in the first place. A hybrid solution is needed.
Online NLP Services
The three main cloud providers, Amazon, Microsoft and Google have their own APIs for interfacing with a host of useful services for NLP. There are other more specialized providers too like clever bot [3]. In doing so they've created a technical solution waiting for a problem. A lot of organizations, having seen Google's Duplex [1], are now jumping on the bandwagon and creating applications consuming these services. It was Winograd in 1968 who showed his SHRDLU [2] system could provide a fairly complete natural language set for exploring a limited domain. Duplex is nothing new in that sense. Google's added speech to text interfaces added a new dimension to this problem.These online NLP services have the advantage that they can be used in a server-less architecture [4]. In my experience however, we usually require a more tight coupling between such services, and not at the client level of the stack.
Use of Natural Language in our own Software
the bot
A bot is primarily centered around what are called intents. An intent is akin to a command, a coupling between a piece of natural language and an action (or a series of actions). In bots, that usually a reply. You can quickly construct a bot, using online offerings. By sticking to a limited domain you can quite quickly make your bot look intelligent too.External bots present more of an integration challenge. Additional language processing is needed to deal with more complicated time requirements, entity recognition, and semantics in general.
Constructing your own bot, be it using neural-networks, semantic hashing [5], semantic vector spaces [6], or more traditional inverted indices, would enable you to add more complex processing.
natural interfaces and the nl-app
We've got our rich widget sets. GUI's are easier to learn, traditional command-line interfaces (CLI) are more powerful [7]. What if we could construct a CLI using natural language, but keep our widget sets. Sort of like the ubiquitous Google search box, in addition to our existing buttons and interfaces.A natural language command like "what was my average income between January and March of 2018.", would take quite a few widgets to setup, and many more buttons or menus to deal with all the possible different commands. Natural language when used right, can be far more powerful than widgets.
References
[1] https://www.theverge.com/2018/5/8/17332070/google-assistant-makes-phone-call-demo-duplex-io-2018[2] https://hci.stanford.edu/winograd/shrdlu/
[3] https://www.cleverbot.com/
[4] https://martinfowler.com/articles/serverless.html
[5] https://www.jpinfotech.org/understanding-short-texts-semantic-enrichment-hashing/
[6] https://github.com/peter3125/sentence2vec
[7] https://www.cybrary.it/0p3n/command-line-interface-cli-vs-graphical-user-interface-gui/
Comments
Post a Comment