04.02.2007 18:46

Updated my research page a little

I'm still writing my paper for the comprehensive exam, but I have uploaded the power point presentation I have given for both seminar and the guys at work. I also added all the weekly reports I have written for the past month. Also, the official publication of the article about me has been posted online.

Click here to visit my research blog

-----

Posted by Jovan Trujillo | Permalink | Categories: News

04.01.2007 06:47

Everyone should speak lojban

I was reading about how people should learn a new language to help give their mind some excercise and the book suggested artificial languages to help strain the neurons. I read about Esperanto and lojban and found lojban to be more interesting. Here is an example of lojban: <\br> lenu pinxe loi dotco birje kei ku na se nelci ro lo prenu <\br> "Drinking German beer is not liked by all people" <\br> I like lojban because it sounds more culturally neutral than Esperanto, plus it was designed by dozens of people instead of just one guys bias. These guys were mathematiccians and linguists, so the language is based on predicate logic and a strict grammar where even the punctuation is enunciated. They say that with this language it may be possible to communicate directly with computers in the future. This is becaused it is based on a logical organization therefore making it easier to wrap a program around it. Expert systems may some day speak lojban in order to improve their effectiveness.

Check out their website at www.lojban.org

-----

Posted by Jovan Trujillo | Permalink | Categories: Journal

04.01.2007 06:33

Generative Programming as a pathway to computer consciousness

Heh, well I don't know if I have anything revolutionary to say about artificial intelligence. It's something I like to dream about anyways. If seems that a standard unix system has everything I need to explore the idea of a fully automated learning machine. I've started to make a list of what I need to do in order to experiment with machines that teach themselves. It's all just a rough sketch of course.

  • The system builds it's own response-stimulus database. Whenever it encouters something that is not in the database, it asks the user for help or searches the web for a possible answer. This is pretty much what the chatbot's do with AIML.
  • The system is constantly added new objects to it's database, and figuring out definitions for them and through those definitions assigns relationships between objects.
  • The system needs to have a goal programmed in it. What is it searching for in all that information? Self-preservation? If that is all it needs then a simple internet worm is all the system would evolve into. The program needs to be constantly evaluating it's network of symbols and relationships to check for fallacies and contradictions. In other words, the goal of the system is to understand it's environment. The environment might be limited to me, the room it's in, and the internet. But I think the internet is rich enough to help nurture and test out the growth of the system. There are picture on the internet for the program to "look" at and describe, sound files for it to "listen" to and help tune it's speech synthesis algorithms.
  • The trick is to write a program that never crashes. It also can't be stuck in an infinite loop where it just repeats the same process over and over again. The process needs to evolve, it needs to change little by little to ensure that the system will learn, and possibly eventually develop a mind similar to ours.
  • Ultimately, the system will need to be dynamic enough to write it's own programs and implent them into it's core software without crashing it or causing another repetitive process loop.

A standard *nix system is nice because of it's strong networking tools and parsing tools. There are quite a few number of methods to parse text. This can be done using regular expresions from perl, awk, and sed, creating lexical analyzers usin flex, bison, and yacc, and using markup tags like in HTML, based on XML, and of course AIML. The shell in a *nix system is what really sets it apart from a standard Windows system, since bash is far more powerful than cmd.exe. Bash would manage the whole program symphony that would be taking place in the system. It would ensure that it doesn't grind to a halt. Finally the best way to have a program write and evaluate programs is probably through lisp. Lisp is special in that you can write macros that write code during execution. It's truely the most dynamic programming language ever devised, and yet it's also one of the oldest. C++ can do similar tricks through templates, and I could probably make perl scripts to write and execute code as well.

So that's what I've been daydreaming about all day on this quiet Saturday. Here is a simple example of a script writing a script using the Korn shell:

#!/bin/ksh
# metaprogram
echo '#!/bin/ksh' >program
i=0
while ((i < 999))
do
        echo "echo $i" >>program
        i=$((i+1))
done
chmod +x program

I tried to compile program v, which is an AIML interpreter written in perl. I have yet to get this program working correctly, it's always the modules that are missing that give me trouble. This time I installed Unicode::Map8 through CPAN but it failed one of the tests while being compiled. I forced installed anyways but looks like the bug was significant. Program V won't compile without Unicode::Map8 and Unicode::String installed.

-----

Posted by Jovan Trujillo | Permalink | Categories: Journal