BTW, please consider: 1:https://github.com/solyaris/dialogs as a VERY VERY DRAFT / proof-of-concept 2:I'm a bad (Ruby) programmer. 3:I'm not a NLP expert. 4:please tolerate my long story/bad English.
Contributes/Collabroations on the open source project, are very welcome: a:comment here. b:email me (prefereed at first glance. giorgio.robino@gmail.com). c:open issues on github (perfect for share nd persistence).
Have a good reading. Thanks. giorgio http://www.twitter.com/solyarisoftware
years ago I studied a bit AIML and also recently I see that Ruby language implementation is a bit obsolete.
My feeling is that AIML are not maintained / growing, but the principal point I a bit discarderd AIML is that it seems to me not faiseable to do a "deterministic" workflow (just let consider the e-commerce purchasing workflow I described in my project http://www.github.com/solyaris/dialogs)
giorgio
That's an AIML alternative that seems a bit better (no XML!), but I do not yet understood if I can do with rivescript a "simple" ecommerce "script" worflow I explained in my comments and on the github doc. I have to investigate.
giorgio
For non-naive implementations you'll have to learn about a linguistics discipline called pragmatics, which deals with conversational semantics and context:
http://nlpers.blogspot.de/2006/04/please-pass-pragmatics.htm... http://www.amazon.com/gp/product/0521294142/sr=8-1/qid=11459...
There is a whole pile of interesting posts around building conversational services/bots.
Some interesting ones:
Sam Lessin: https://t.co/0ZFlBGPqpg Chris Messina: https://medium.com/@chrismessina/2016-will-be-the-year-of-co...
Matt Galligan: https://medium.com/@mg/the-graphical-user-interface-will-soo...
Clement Vouillon: https://medium.com/point-nine-news/software-bots-c56aeedcfec...
Ryan Block: https://medium.com/@ryan/bots-messaging-and-the-interface-vi...
I've also written a bunch of articles on how we tackle some of these problems at Converse AI here:
http://blog.converse.ai/introduction/an-introduction-to-conv...
I maintain a sort of microblog just about these topics: http://www.twitter.com/solyarisoftware
Me too I just discovered Chris Messina's definition of "conversational commerce", definition that I like.
About "personality":
Maybe some years ago we have called this just "user profiling".
In facts approach I suggested (modeling dialogs as a composition of state machines: http://www.github.com/solyaris/dialogs) is just a workflow framework indipendent by the personality/profiling implemenentation. - On one side personality/profiling could be delegated to to some "inerithed class" (of what I defined as "elemental" dialogs). - on the other side I'd delegate in the "interpret" method.
Let's consider the usual ecommerce workflow. This could be splitted in 2/3 successive dialogs:
1. compiling a shopping cart - dialog
2. setting the delivery address - dialog
3. setting the delivery time - dialog
So, by example, in the delivery address dialog, the chat bot (or "conversational agent") know the buyer person interacting (because he stored somewhere the buyer address in a previous "profiling" dialog ), so the chatbot could simply propose to use the stored address or submitting a new one.
Just to say, that, for business workflow, maybe the "personality" maybe is just a smart profiling. isn't it ?
giorgio
I'll investigate and study to understand about "pragmatic" and semantic understanding; thanks.
But let me do some more notes:
1. my raugh and crippled code proposal at http://www.github.com/solyaris/dialogs is to consider a "framework" where dialog are composed/nested as "elemental dialogs" (archetypes or "abstract classes") to be instantiated as subclasses, and of course there is not a real NLP. The semantic understanding is "delegated" to an external engine (see the interpret() method).
2. In my modest opinion the BIG trade off is between a system that really do a semantic interpretation and a system tha quickly supply a service to a user (buyer) in a DETERMINISTIC/fast workflow.
Please let consider the usual example I propose: an ecommerce shopping: I call this a bussines service, that "have to" bring user to purchase something as goal, "as talking by phone" with the buyer (BTW I worked a bit on a proximity ecommerce project http://www.rosposhop.com, where buyer and seller live in the same area and know each other personally).
So the state-machines composistion I proposed is maybe naif but focus on a deterministic workflow, to achive some business goal/task.
To be pragmaticals: There is some (open-source) NLP to already done to realize a "simple" task as a "ecommerce" text conversation" ? I'm looking forward for it :)
giorgio