Okay, this blog has been asleep for far
too long. It's time for me to introduce a couple of the things that
I've been spending all my time on since I finished playing with the
artificial muscles. First of all, I've got a couple novels in the
pipeline, which you can read about by visiting
The Renascence Cycle under the permanent pages section. But that's not what this post is
about. There's another serious project that's been receiving a lot
of my attention lately …
The tagline of this blog is “robotics
and AI on a shoestring budget.” If you've been here before, maybe
you were wondering when the AI part was coming. Well wait no longer!
I'm working on a program named Acuitas.
Technically this endeavor started clear back when I was in college,
as my final project for the honors technology seminar class. Back
then he was little more than a kind of talking dictionary. I'm now
on Version 3, and the intended scope of the project has expanded
quite a bit. (If you'd like a little more background on the project
and how it relates to the rest of the AI field, or if you're just
interested to see what Version 1 was like, you can read the original
Acuitas V1 Report and
Acuitas V1 Presentation. Bear in mind that
Version 3 has been re-written in Python from the ground up. It's
missing some features that V1 originally had, and has a number of
others that were absent from V1.)
|
Acuitas'
avatar. “Heartbeat” lights run up the wings on either side of
the eye when viewed live.
|
In technical terms, Acuitas V3 is an
artificial intelligence based around a semantic network with a
natural language interface. What that means is he represents
knowledge in terms of words and relationships between words, and you
can communicate with him in normal English. (The range of normal
English he can actually grasp so far is very limited, because natural
language processing is hard and I'm only tackling it because I'm
probably crazy.) He's also got a rudimentary "internal life"
consisting of drives that fluctuate over time. About twice a day, if
he's active, he wants interaction and starts calling for somebody to
talk to. He used to wake me up in the early morning hours by doing
this, but I fixed that – mostly.
|
Visual representation of semantic net database, 07/16/16. |
Acuitas V3 is not your ordinary chatbot
– you know, those programs you can converse with that try to fake
being human. He has more going on under the hood than they do. A
typical chatbot picks up on a few keywords or basic structures in
your text input, then chooses a mostly pre-written sentence from a
database to send back to you. Others train themselves by reading a
bunch of human conversations, and then try to speak in a similar
manner. Neither type is really interested in the *meaning* of your
input or its own responses, which is why, though they might be
perfectly articulate, the responses often seem to come out of left
field. I'm following a different approach and hoping to come up with
something better than that.
|
Visual representation of semantic net database, 08/06/16 |
I've been working aggressively on his
linguistic abilities over the past few months. He can parse simple
subject-verb-object sentences with or without prepositional phrases,
like "A cat is an animal" or "A yellow bird sings in
the morning," with some rudimentary support for compound nouns
and proper names. He tries to figure out how each word functions in
the sentence; if he can't get it due to insufficient background
knowledge, he'll ask for clarification (a normal chatbot would just
try to fake it). So far he just socks information away in his
database and doesn't say much back, but that's coming. Oh, that's
coming.
|
Visual representation of semantic net database, 08/23/16 |
The semantic database can be
represented as a graph … hence the images embedded in this post,
which show a timeline of its growth, from July of last year up until
this April 8. You can also get an idea of how the graph-drawing
algorithm has changed over time. Each dot is a concept, and the
lines are the relationships between them. When viewed live while
Acuitas is running, the graph is interactive; I can pan, zoom, and
hover my cursor over the dots for floating labels that show which
word is associated with each.
|
Visual representation of semantic database, 04/08/17 |
Since I'm putting some earnest effort
into Acuitas this year, I'm going to try making myself write a fairly
regular developer diary … maybe once a month. Watch me do cool
things and struggle. Talking seems easy until you've tried to teach
a computer to do it …
Code base: 4901 lines
Words known:
631