The big project for this month was
introducing a system for discriminating between long-term and
short-term information. Previously, if you told Acuitas something
like, “I am sad,” he would assume that being sad was a fixed
property of your nature, and store a fact to that effect in his
database. Oops. So I started working on ways to recognize when some
condition is so transient that it doesn't deserve to go into
long-term memory.
This probably occasioned more hard-core
thinking than any feature I've added since I started keeping these
diaries. I started out thinking that Acuitas would clue in to time
adverbs provided by the human conversation partner (such as “now,”
“short,” “forever,” “years,” etc.). But when I started
pondering which kinds of timeframes qualify as short-term or
long-term, it occurred to me that the system shouldn't be bound to a
human sense of time. One could imagine an ent-like intelligence that
thinks human conditions which often remain valid for years or decades
– like what jobs we hold, where we live, and what relationships we
have – are comparatively ephemeral. Or one could imagine a speed
superintelligence that thinks the lifetime of an average candle is a
long while. I want Acuitas to be much more human-like than either of
these extremes, but for the sake of code reusability, I felt I ought
to consider these possibilities.
After a lot of mental churn, I decided
that I just don't have the necessary groundwork in place to do this
properly. (This is not an uncommon Acuitas problem. I've found that
there ends up being a high level of interdependence between the
various systems and features.) So I fell back on taking cues from
humans as a temporary stopgap measure. Acuitas will rely on my
subjective sense of time until he gets his own (which may not be for
a while yet). If there's no duration indicator in a sentence, he can
explicitly ask for one; he's also capable of learning over time which
conditions are likely to be brief and which are likely to persist.
For now, nothing is done with the transitory conditions. I didn't
get around to implementing a short-term or current status region of
the database, so anything that can't go in the long-term database
gets discarded.
I also did some touching up around the
conversation engine, replacing a few canned placeholder phrases that
Acuitas was using with more procedurally generated text, and
improving his ability to recognize when a speaker is introducing
him/herself.
Recent memory map visualization:
Code base: 9663 lines
Words known: 1425
Concept-layer links: 3517