AI Research Project | mkv16

may 09, 2009 11:34am

Blogging...

Took a break this week to fix up the blog. The simpleblog software I used was woefully inadequate. After gutting most of the code, I revised an old phpMyAdmin style script and repurposed it for a generic admin system that I could use to replace the blog CMS.

This appears to be working now.
Next up, now that mkv16 has been collecting records for a week, I'm tasked with retreiving useful information using the command "list" to make inferences on any data that matches the query.

There is data; now to make sense of it.

Posted By: Markavian

0 comments | Comments

april 25, 2009 05:55pm

Lookahead Example

2009-02-02 07:54 <Markavian> john lives in manchester

john [no matches] 
new notion(john)

lives [lives, lives in]
lives [exact match]
lives in [exact match]
lives in [longest match]

manchester [no matches]
new notion (manchester)


Pseudocode for evaluating information from plain text.

Posted By: Markavian

1 comments | Comments

april 25, 2009 11:07am

Psudeo-code message parser

Learning

notion lives in
notion is a
notion is reverse of

john lives in manchester
john lives in england
john is a person
sophie is a person
machester is a city
coventry is a city
people is plural of person
cities is plural of city
lives is plural of live
is plural of is reverse of is singular of
that is a pronoun
who is a pronoun
who describes a person

list people that live in cities

Processing
features: look ahead, predictive search, joining of unknown terms, flattening sequences of notions based on predictive search, storing triples


command: notion(lives, in)
command: notion(is, a)
command: notion(is, reverse, of)
[john]:unknown, lives (lives in?), [lives in]:notion, [manchester]:unknown
	Normalize([john]:notion, [lives in]:notion, [manchester]:notion)
	(Length == 3) triple(john, lives in, manchester)
[john]:notion, is (is a?), [is a]:notion, [person]:unknown
	Normalize([john]:notion, [is a]:notion, [person]:notion)
	(Length == 3) triple(john, is a, person)
[manchester]:notion, is (is a?), [is a]:notion, [city]:unknown
	Normalize([manchester]:notion, [is a]:notion, [city]:notion)
	(Length == 3) triple(manchester, is a, city)
[people]:unknown, is (is a?) [is]:unknown, [plural]:unknown, [of]:unknown, [person]:notion
	Normalize([people]:notion, [is plural of]:notion, [person]:notion)
	(Length == 3) triple(people, is plural of, person)
[cities]:unknown, is (is a?, is plural of?) [is plural of]:notion, [city]:notion
	Normalize([cities]:notion, [is plural of]:notion, [city]:notion)
	(Length == 3) triple(cities, is plural of, city)
lives (lives in?) [lives]:unknown, is (is a?, is plural of?) [is plural of]:notion, [live]:unknown
	Normalize([lives]:notion, [is plural of]:notion, [live]:notion)
is (is a? is plural of?) [is plural of]:notion, is (is a?, is plural?, is reverse of?) [is reverse of]:notion, is (is a?, is plural?, is reverse of?) [is]:unknown, [singular]:unknown, [of]:unknown)
	Normalize([is plural of]:notion, [is reverse of]:notion, [is singular of]:notion)
	(Length == 3) triple(is plural of, is reverse of, is singular of)
[that]:unknown, is (is a?) [is a]:notion, [pronoun]:unknown
	Normalize([that]:notion, [is a]:notion, [pronoun]:notion)
	(Length == 3) triple(that, is a, pronoun)
[who]:unknown, is (is a?) [is a]:notion, [pronoun]:notion
	Normalize([who]:notion, [is a]:notion, [pronoun]:notion)
	(Length == 3) triple(who, is a, pronoun)
[who]:notion, [describes]:unknown, [a]:unknown, [person]:notion
	Normalize([who]:notion, [describes a]:notion, [person]:notion)
	(Length == 3) triple(who, describes a, person)

command: list([people that live in cities]:string)
[people]:notion
  people -> is plural of -> person
   john -> is a -> person (X)
[that]:notion
  that -> is a -> pronoun
   who -> is a -> pronoun (X)
[live]:notion
  live <- is plural <- lives
[in]:unknown
 in ? no result
 live (lives?) (lives in?) [live in]:notion
  john <- lives in <- manchester
[cities]:notion
  cities -> is plural of -> city

list(is a, people)
  0 results

list(is a, person)
  john <- is a <- person
  sophie <- is a <- person

list(is a, that)
  0 results

/* troublesome:
list(is a, pronoun)
  that <- is a <- pronoun
  who <- is a <- pronoun
*/

list(is a, cities)
  0 results

list(is a, city)
  manchester <- is a <- city
  coventry <- is a <- city

list(lives in)
  john <- lives in <- manchester
  john <- lives in <- england

match(john, manchester, john <- lives in <- manchester) (TRUE)
match(sophie, manchester, ?)
match(john, coventry, ?)
match(sophie, coventry, ?)

Posted By: Markavian

0 comments | Comments

april 25, 2009 11:00am

Lemons and pie

If I told you that lemons_and_pie was the same as lemons and pie because I replaced '_'s with ' ' spaces, would you be able to tell that food_and_drink was the same as food and drink, and if so, how?

Did you build a regex to filter out all _'s?
Did you squint your eyes and recognise the letters instead of the lines?

Something else?

Posted By: Markavian

0 comments | Comments

april 25, 2009 10:02am

mkv16 memory

mkv16
memory...

Learn stuff

Database:
memory: triple, source, date
triple: notion, relation, notion
source: context, person
notion: description
relation: notion

Chat:
relation is a
relation is reverse of

relation is singular of
relation is multiple of

relation lives in
relation live in

lives in is reverse of live in
is singular of is reverse of is multiple of

that is a pronoun

John lives in Manchester
Manchester is a city
John is a person
person is singular of people
people is multiple of person

list people that live in Manchester


Possible relationships that should hold if detected in plain text. Parser should be able to recognise triples based on known notions. Suggested fields set out for database.

Posted By: Markavian

0 comments | Comments