Hacker News new | ask | show | jobs
by BjoernKW 3800 days ago
Though finite state machines can work for simple dialogue structures, more complex dialogues generated by them will come across as robotic.

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...

2 comments

A great point regarding pragmatics. Personality is also becoming a key issue to consider.

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...

thanks a lot for your links!

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

thank for your links! generally speaking, I can't agree with your first statement :) and I anticipated my ignorance in linguistic topics :)

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