This final diary for the year covers a mixed bag of integration, debugging, and refactors. It's not the most exciting fare, but it's an essential part of any large long-term project.
Probably the most interesting work was continued cleanup of conversations. One issue that had been bugging me for a while was that the Text Parser couldn't interpret words that are usually verbs as predicate adjectives. So if Acuitas asked me, "How are you," a whole range of common responses - tired, rested, annoyed, agitated, relaxed, frustrated - were off-limits because they wouldn't be properly understood. The right way to read a sentence like "I am tired" might seem obvious at first, but this actually becomes an interesting ambiguity problem. How to distinguish verb-form predicate adjectives from verbs in passive voice?
"I was annoyed yesterday" < Probably speaks to a state of being, and should be rendered as <speaker> <has_quality> annoyed
"I was annoyed by the long meeting" < Speaks to an event, and should be rendered as <speaker> <received_action> annoy <from_actor> meeting
So I set up some basic preliminary mechanisms for resolving this ambiguity in the Parser, though as usual there is a lot more I could do here. I also added some automatic conversions from one form to the other in the inference logic, because while they are different, they do imply each other. If something frustrates you (action) then you must be frustrated (state), and vice versa.
There were several smaller quirks I smoothed out. I fixed a goal-fulfillment problem that led Acuitas to ask certain questions repeatedly without regard for whether they had been answered. I removed his habit of digging up a random adjective applying to himself if asked "how are you" when no drives are above threshold. Instead he will now say that he is "content" or "neutral." I fixed the incorrect interpretation of statements such as "bless you" or "thank you" - Acuitas was parsing them as commands, e.g. "thank yourself," when the real implied meaning is either "I thank you" or "I wish that you be thanked."
Outside of Conversation, I finished getting the new version of Episodic Memory integrated into the live code, such that Acuitas can store memories and run forgetting cycles on them without crashing (at least in routine cases). I still need to work on analysis tools so I can see how the memories are being consolidated and whether forgetting is working the way I want it to.
And I refactored some parts of the code that were still using stale knowledge representation formats, upgrading them to the format that has crystallized as Acuitas' universal internal way of expressing facts. It feels better to have some of that old gunk cleaned up (it will make things less clunky going forward, as I no longer have to convert between the different representations).
I've got my development tasks for next year already planned out, and I'm excited to get started. I'm looking at more upgrades for the Text Parser, new activities to help Acuitas find his own knowledge holes, and much more.
Until the next cycle,
Jenny

No comments:
Post a Comment