Ariyo Nugroho wrote:
> Wow... Your home must be very sophisticated, Steve! I'm imagining that
> it's like of Richie Rich's home :)
I'm having fun. Actually just moved into a new house 2 months ago so now I'm
planning how to do it all over again.
>
> By the way, I dont understand when you said "Another trick I use is to
> carry context in the Prolog engine".
This is why I'm maybe getting a little off topic for an alicebot mailing list.
My system isn't controlled by alicebot, but simply uses it as part of a larger
system. When you type an input sentence into the chat interface it is submitted
to the central "brain" I wrote in the Prolog language (SWI Prolog to be exact).
The brain has a small natural language parser which is sufficient to handle
input sentences which are specific to queries and actions possible for the rest
of my system. "turn on the living room lights." is an action that can be
performed through my X10 device interface which I've written for Prolog. Only
if my Prolog code can't parse an input sentence itself does it pass it through
to alicebot and then return that response. The context which I was referring to
is entirely in Prolog and is handled by an assert() and can be queried by future
handlers. For example if I say "turn on the outside lights" the Prolog engine
will understand "outside" as a location, then discover the X10 devices which are
outside from the SQL database, then turn them on, but it will also
assert(current_location(outside)). Then if I follow up with simply "show me",
the Prolog handler for that will query current_location(Location) and then use
that Location to determine which computer controls the camera for that location,
ask that computer for a frame grab, then return it. BTW, in case you picked
that up, my system is fully distributed using CORBA between VB6, Java and C++
code (the C++ code provides a 2 way interface with Prolog). Part of the VB6
code serves up a Microsoft Agent so for example the Prolog engine can request
that any of the Windows boxes use their MS Agents to speak something, or
otherwise control the agent (show, hide, move, whatever). I got bored one night
a few years ago and had Peedy on 3 different computers saying/singing "row row
row your boat" in a round all controlled from the Prolog engine - only took
about 15 minutes to write on top of what was there. Since everything can talk
to any of the CORBA services, I can mix and match and use multiple user
interfaces - the web based chat uses exactly the same chat interface to Prolog
that the VB6 chat interface uses. And when I give a voice command through the
PBX system, the Java code which I've got controlling the call also uses that
same core natural language engine via the CORBA service.
So back to the question, the context currently stays in the Prolog engine and
doesn't get down to alicebot, but if I wanted to give it a bit more of a clue
I'd simply pass all input to alicebot even if the Prolog engine gave the actual
response - that way alicebot would still be able to gather any context it could
from the conversation.
Steve
>
> What do you mean by "context" here? It is a kind of using <topic> tag?
>
> Regards,
>
>
> Ariyo
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer