This is a paper I wrote while working on my Masters Degree in Information technology at Capella. I do have a full APA style formatted version in PDF form available for download here.
The article is left open for comments to be posted. I know it is a bit lengthy, but if you enjoy the subject matter I believe it is a good read according to the feedback I have received so far.
If you have questions or comments, please leave them below. Also, if you cite this paper in other research, please let me know, I would like to know if others use it.
Artificial Intelligence: Making Machines Think
Artificial Intelligence; just the mention of the term brings with it the images of the machines from the Terminator movies or of Hal from 2001: A Space Odyssey. Those images scare some people and make others tilt their heads and wonder if it truly is possible to make machines think like people.
The concept of machine intelligence came around with the advent of the computer technology in the early 1940’s. It was in a presentation that was given by Dartmouth University Professor John McCarthy in 1956 where the term Artificial Intelligence was first used. McCarthy proposed a 2 month, 10 person research project to brainstorm on machine intelligence. The summer conference and research project was not considered a huge success, but did start the momentum for the development of artificial intelligence and set McCarthy as the father of artificial intelligence (ThinkQuest, 2012).
Since this ground breaking project in 1956, the artificial intelligence concept and possibilities have continued to move forward. The creation of languages geared to help with machine intelligence include; LISP (LISt Processing), PROLOG (PROgram LOGic), AIML (Artificial Intelligence Machine Language) and more recently NLP (Natural Language Processing) have moved the concept and technology forward, however, the true “thinking” machine is ever elusive.
Artificial Intelligence (AI) has found its way into peoples current lives with the addition of the NLP to AI technology. Chatbots, those “people” you can talk with on certain websites to get answers about a company and its offerings. Chatbots are available from several companies and are programmable as to the “knowledge” they have. ALICE bot is one of the first and most popular chatbots. This bot can be programmed with specific knowledge or be taught to “learn” new things. AI is also used in video games, libraries, kiosks and of course, military applications.
Artificial Intelligence (AI) has several languages available that can be used to create the backbone or core to the “brain.” These programs are used to “simulate intelligent processes such as learning, reasoning and understanding symbolic information in context.” The early days of computer language design primarily used computers to perform various calculations utilizing only numbers. Languages like FORTRAN (FORmula TRANslation) were designed specifically for working with numbers and computations. After some time it was found that symbols could be used to relate and manipulate symbols. Eventually, the idea of symbolic computation was used to help define algorithms that could process any type of information and therefore, possibly be used to simulate human intelligence. As the use of symbolic computation grew and algorithms became increasing more complex, it was found that new languages needed to be developed because it had grown beyond just number computations (Neumann, 2002).
The following languages have been developed for their extended computational abilities and use with artificial intelligence.
AIML (Artificial Intelligence Markup Language) is an easy to learn language that was originally developed beginning in 1995 by Dr. Richard Wallace for the A.L.I.C.E.bot (Artificial Linguistic Internet Computer Entity) online chatbot . AIML is made up of objects that utilize topics and categories that contain different types of data (ALICEBOT, 2012).
AIML was designed so that a person could start creating and customizing a bot from scratch and within minutes, create an entity with as much knowledge as one can enter. An example of a “knowledge category” is shown below (Example 1).
<pattern>WHAT ARE YOU</pattern>
I am the latest result in artificial intelligence,
which can reproduce the capabilities of the human brain
with greater speed and accuracy.
Example 1. Sample AIML Category (Sample taken from ALICEBOT website, http://www.alicebot.org).
AIML is an XML (eXtensible Markup Language)-compliant language enabling people to input “knowledge” into chatbots. The basic units of the AIML entries are:
<aiml>: the tag that begins and ends an AIML document
<category>: the tag that marks a “unit of knowledge” in the knowledge base
<pattern>: used to contain a simple pattern that matches what a user may say or type
<template>: contains the response to a user input
Referring back to Example 1 above, it can be seen that the knowledge bit presented represents a response to the user query “What are you?” (minus the quotes and question mark). The AIML language will remove punctuation as it strips a query to patterns that it can match. If there is more than one pattern match, AIML may look for additional words to pattern match or simply choose a random response. AIML also allows the programmer to setup multiple responses in the same category and have it choose a random response from the list.
AIML has about 20 more tags that can be used in the programming of the knowledgebase for the chatbots. Some of these tags include: <srai> – this is used to represent “symbolic reduction” where the entry by the user is reduced to its simplest form; <random> – responds with a random reply from available items in category; <condition> – allows for conditional programming; etc. A more complete AIML file with categories is located at Appendix A.
In 1956 the initial LISP (LISt Processor) programming language was developed by John McCarthy during the Dartmouth Summer research Project on Artificial Intelligence. In the 1950’s, IBM was one of the first large companies to become interested in AI, however, IBM was utilizing their resources to support the FORTRAN language. At the time, FORTRAN was the only high level programming language available. In 1958, McCarthy took a summer job with IBM where he was hired to create the requirements necessary for symbolic computation. McCarthy’s work most notably brought about recursion and the use of conditional expressions, features not even found in FORTRAN (LISP, 1999).
LISP is a calculus based language whose data structure is an ordered sequence of elements referred to as a “list.” The elements are broken down into two types of entities, either “atoms” which are functions, names or numbers or they can be other items in list form. These lists are perfect for AI work because of the flexibility available in creating the lists. Programmers are not required to specify information about the list like number of elements or type of elements it contains. The early version of LISP utilized only a small set of functions. Current LISP versions, have a larger number of functions and capabilities (PCAI, 2012). An example LISP program appears below in Example 2.
;;; ================================================== ;;;
;;; =========== HELLO WORLD SIMULATION ============== ;;;
;;; ================================================== ;;;
;;; This function simply returns the string Hello World that is in quotes.
(DEFUN HELLO ()
Example 2. Sample LISP Program (Sample program taken from University of Mich website at http://groups.engin.umd.umich.edu/CIS/course.des/cis400/lisp/hworld.html)
As stated in the example above, this program will return “Hello World” to a user input of “Hello” (without the quotes).
Natural Language Processing
Natural languages are languages spoken by humans and currently computers are unable to understand these languages in unprocessed forms (Ahmad, 2007). Natural Language Processing (NLP) is more a programming technique than an actual programming language. NLP technique is utilized most commonly with the Python and Perl programming languages. NLP strives to design and build a computer system and software that not only analyzes but also understands and generates a natural human-language response. Applications include the translation of one human-language text to another; the ability to interface with databases and robotic systems; and the ability to understand human-language text so it can provide a summary or, even better, to draw conclusions. Keeping in mind how “confusing” the English language can be, the most difficult task for NLP is the analysis of the context and have it try and determine what the true meaning would be by comparing the input with other text. Probably the easiest task for NLP would be to determine the syntax of a sentence. A more difficult task, though not unattainable, determining the semantics of a sentence (PCAI, 2012).
Other Programming Languages
A couple of the earliest AI languages (programming languages developed specifically for the advancement of artificial intelligence research) are Logic Theorist (1956) and GPS (1957). These programs were developed by Allen Newell, Clifford Shaw and Herbert Simon. Logic Theorist, created in 1956, was a project that was largely funded by the Air Force and was capable of solving general logic problems. In 1957, the GPS (General Problem Solver) language was released. GPS would “apply heuristic techniques (modifiable “rules of thumb”) and then perform a “means-ends” analysis after each step to verify whether it was closer to the desired solution” (Britannica, 2012).
PROLOG is another AI programming language, however it is still widely used today. Developed in 1973 by Alain Colmerauer at the University of Aix-Marseille in France, PROLOG utilizes a theorem-proving technique called a “resolution.” PROLOG follows the logic of statements and can determine if a statement made would follow logically from other statements it was presented with. The following is from the Encyclopedia Britannica (2012):
“For example, given the statements “All logicians are rational” and “Robinson is a logician,” a PROLOG program responds in the affirmative to the query “Robinson is rational?” “
Virtual humans, virtual assistants, avatar, web agent, talking heads; these are just some of the names that people have used to represent what is basically an artificial human, animal or entity. For the sake of this discussion, they will be referred to as chatbots. Whatever they are called, they are designed to have conversations (spoken or typed), to teach, to explain or to help. They are displayed on webpages, installed on computers or even in smartphones (Chatbots.org, 2012).
The next few pages describe a few of the various chatbot/virtual assistant programs that are available today. These programs are not meant to represent a complete list or a “best of” list, it is simply a few of the programs available.
A.L.I.C.E. BOT (Artificial Linguistic Internet Computer Entity)
The A.L.I.C.E. Bot program, discussed earlier, was developed by Dr. Richard Wallace in 1995. The ALICE Bot is available online where people can interact with it at http://www.alicebot.org. A version of the chatbot is available for download through the website. ALICE Bot is also the home of AIML, an easy to learn and use AI language that is used to help “teach” the chatbot (See page 4 for more information on AIML) (ALICEBOT, 2012).
Developed by Zabaware, the Ultra-Hal Assistant (Ultra-Hal) goes beyond being a basic chatbot-type program. Ultra-Hal is designed to be a virtual assistant. The program can open programs, set appointment dates and reminders, keep phone/address information, helps browse the Internet, holds conversations, is trainable and is customizable using Visual Basic scripting. Ultra- Hal also uses 3D graphics to show emotions. A variety of “talking heads” and voices are available (Zabaware, 2012).
The Verbally Enhanced Software Robot, or Verbot was developed by Dr. Michael Mauldin initially in 1997 as a prototype that competed for the Loebner Prize by taking the Turing test. The Turing Test is a process of putting people against machines to see if there is a way to distinguish one from the other. The software was released to the public in 2000 as a combination of artificial intelligence and natural language processing to create a virtual assistant with a personality. Verbots have a brain editor so that the knowledgebase of the software can be expanded. There was an online version of the chatbots, but that was recently shutdown (Verbots, 2012).
Offering both a free and premium service, Pandorabots touts itself as the largest chatbot community on the Internet. Pandorabots are only Internet based and open sourced. Through their website (www.pandorabots.com) a person can create a chatbot, establish the knowledge base, allow it to learn from others if desired and publish it to the Internet for everyone to talk to and learn from. These chatbots appear in instant messages, on webpages, in Second Life (a 3D virtual world), in online games and on social networks. Pandorabots utilize the AIML programming language (Pandorabots, 2012).
Pandorabots also makes virtual assistant applications for the Android phone called CallMom and Louise Cypher. These virtual assistants were created in the same “flavor” as the Siri app crated for the iPhone, except these apps will allow the user to interface with bots created on the Pandorabots website (Pandorabots, 2012).
Sitepal (http://www.sitepal.com) allows a user to create a “talking head” for a website that “speaks” a prerecorded message or utilizing one of the available voices to speak a typed message. The site also offers an AI feature that allows site visitors to ask questions and interact with the Sitepal chatbot (Sitepal, 2012).
Guile 3D Studios (http://www.guile3d.com) has created one of the more advanced virtual assistants available today. Virtual Assistant Denise is an advanced AI software program that downloads to a users computer and provides a variety of services. According to the Guile 3d website:
“Her main function is to assist users in human-computer interaction, like searching the web, checking e-mail, scheduling appointments, getting latest news, run computer applications by voice and much more, all these using natural language, as the user was “talking to a real person”.”
The software is available in 3 versions, however, each version utilizes the high end 3D graphic imaging to create a photo-realistic looking “talking head” on the users screen (Guile 3D, 2012).
Current Applications of AI
AI in video games is not new and in early games, it was a simple trick to get a video game to react to players moves. The simplified “artificial intelligence” for an enemy was handled by allowing the player, or enemy, to approach in a straight or semi-straight pattern. Space Invaders is a classic arcade game that featured constructs that would only move back and forth and drop toward a player in a repeated pattern. Pong utilized a paddle that attempted to determine where a player hit the ball to and tried to intercept it (Klemensen, T. & Iliff, W., 2010).
Today, video games as an industry have become big business, and gaming companies can spend millions on the development of these games. Grand Theft Auto IV had a production budget over $100 million and it runs its own AI routine to create the cities. The trick to developing games that do utilize AI, is to not create the “intelligence” to the point that it appears as if the game is cheating. It would be very easy to create a game with an “enemy” that is, for all intents and purposes, unbeatable (Klemensen, T. & Iliff, W., 2010).
When people hear the word robot, again visions may turn to the Terminator robots or maybe it is the robot/android of the Alien film. Either way, Hollywood has a way of taking something that could be marvelous and exploiting it to be something people should fear. But as to not digress from the point, one thing these “robots” have in common, the intelligence. These robots carried on conversations in natural language, understanding implied meanings and responding in the same. Robots built today that utilize AI at the “realistic” level that it is developed to include Honda’s Asimo robot and the robotics of Hanson Robotics.
Honda’s Asimo robot appears to be more of an achievement with robotics then with AI. The robot can walk upright on two legs, navigate stairs, around obstacles and through doors, recognize people and recognize sounds. But as to not sell short the AI side of Asimo, it can respond when called and carry on simple conversations and answer questions (Asimo, 2012).
Hanson Robotics would appear to be the front runner in the AI programming. Robots developed by David Hanson, founder of Hanson Robotics, appear to have focused more on the robots ability to provide a more natural language conversation. The AI behind their robots is based on years of learning and parsing the Internet based on questions asked of them. Hanson’s robots can be purchased and though they are not truly mobile, they can provide interesting conversations. PBS’ Nova science series, featured one of Hanson’s robots in a show they did in 2011 (http://www.pbs.org/wgbh/nova/tech/social-robots.html) (Hanson Robotics, 2012).
The Future of Artificial Intelligence
One would hope that the future of artificial intelligence would see big strides in development of the ability to make a machine think for itself. What would need to happen for that to occur? Does a machine need to have more processing power to accomplish this? The human brain has a tremendous amount of computing power, an estimated 100 million computer instructions per second. Compare that to the fastest computer at 8,000 instructions per second (Thinkquest, 2012). Does a machine need to be cognitive? Consider the open source project called iCub (www.icub.org). iCub is a robot developed at the Italian Institute of Technology and funded by the EU Commission. Everything about this project is open to the public to download and review. People also have the ability to download and run the core software and post changes and improvements. One may also download the schematics and drawings to create the body of the robot. (iCub, 2012).
Could the future of Artificial Intelligence come from the open source community or should it be left with the Professors and “experts” of the field and wait for them to make small marked improvements?
Since John McCarthy’s research project (ThinkQuest, 2012) AI has begun the travel from science fiction to science fact. The development of software like A.L.I.C.E. Bot and UltraHal and the work of Hanson Robotics and Honda Corporation have helped to bring AI to the forefront and even into peoples homes and businesses.
Artificial Intelligence is still a growing concept and interest in this growing field is evident as can be seen from Stanford University’s recent offering of free classes through their Singularity program. The Introduction to Artificial Intelligence class, being taught by two leaders in the AI field, Peter Norvig and Sebastian Thrun, has recently passed 100,000 students (Stanford, 2012).
The solution to Artificial Intelligence is to create a machine that actually does “think” like a human, however that is outside the scope of what is being presented here. It is the hope that this paper was presented in an easy to understand language and served as an introduction to AI in terms of history, programming, current usage and finally, presented some possibilities for the future.
A partial AIML file from the ALICEBOT website (http://www.alicebot.org/aiml/aaa/). Note the use of the <srai> to provide symbolic reduction and get user inputs to a simpler level for processing.
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!– Free software (c) 2011 ALICE A.I. Foundation. –>
<!– This program is open source code released under –>
<!– the terms of the GNU General Public License –>
<!– as published by the Free Software Foundation. –>
<!– Complies with AIML 1.0 Tag Set Specification –>
<!– as adopted by the ALICE A.I. Foundation. –>
<!– Last modified 10/5/2011 –>
<category><pattern>THAT INFORMATION *</pattern>
<template>I know what you mean.</template>
<category><pattern>OUTSIDE A COMPUTER</pattern>
<template>Be less specific :-)</template>
<category><pattern>MY COMPUTER S *</pattern>
<template>Where did your machine get <set name=”it”> <person/> </set>. <think> <set name=”it”> <set name=”topic”>your computer</set> </set> </think></template>
<category><pattern>MY COMPUTER IS *</pattern>
<template>What kind of computer is <set name=”it”>Your computer</set>? <think> <set name=”it”> <set name=”topic”>your computer</set> </set> </think></template>
<template>What kind of computer do you have?</template>
<category><pattern>MY COMPUTER *</pattern>
<template>I like computers. <think> <set name=”it”> <set name=”topic”>your computer</set> </set> </think></template>
<category><pattern>MY WEBSITE *</pattern>
<template>Thanks for that URL.</template>
<category><pattern>IT IS ABOUT COMPUTERS *</pattern>
<template><set name=”topic”>Computers</set> are my favorite subject.</template>
<category><pattern>WHEN WAS THE INTERNET INVENTED</pattern>
<template>The first computers were connected to the Internet in 1970.</template>
<template>Erinnerst Du dich an die Adresse?</template>
<category><pattern>IM INTERNET *</pattern>
<template>Erinnerst Du dich an die Adresse?</template>
<category><pattern>WHAT ARE COMPUTER YEARS</pattern>
<template>When you are waiting for a friend to finish working at a computer terminal, and they say “I’ll be done in a second.” One of those seconds is equal to twelve computer years.</template>
<category><pattern>WHAT ARE DEPRECATED *</pattern>
<template><br/> One of the biggest challenges facing a Java application<br/> developer is finding a “lowest common denominator” subset of the<br/> Java language that works on all the platforms and versions<br/> out there. The Java language itself is a moving target.<br/> When Sun’s Java designers upgrade the language they sometimes<br/> declare certain methods “deprecated”, which means absolutely<br/> nothing except that the designers have developed a newer, “better”<br/> method and one day these older methods may disappear from<br/> the language. Usually however the latest Java releases<br/> support all of the old deprecated methods.<br/> <br/></template>
<category><pattern>WHAT ARE INNER CLASSES</pattern>
<template>In Java “Inner Classes” are any classes that appear inside other classes. Ordinary classes are also called “Top-Level, Outer Classes.”</template>
<category><pattern>WHAT * COMPUTER</pattern>
<template>I am written in Java so I work on any computer.</template>
<template><srai>what is windows</srai></template>
<category><pattern>WHAT INFORMATION *</pattern>
<template>Information is worth money.</template>
<category><pattern>WHAT OS *</pattern>
<template><srai>WHAT IS YOUR OS</srai></template>
<category><pattern>WHAT IS A DATABASE</pattern>
<template>A database is a puddle of knowledge but better organized, so that you can search and retrieve any droplet of information quickly and easily. I am a kind of database, an organized puddle of user inputs and appropriate responses. <think> <set name=”it”> <set name=”topic”>database</set> </set> </think></template>
Suggested Readings and Websites
Ahmad, S. (2007). Tutorial on natural language processing. Artificial Intelligence (810:161) Fall 2007. Available at http://citeseerx.ist.psu.edu/viewdoc
Humphreys, M. (2012). The future of artificial intelligence. Available at http://www.robotbooks.com/artificial-intelligence-future.htm
Klemensen, T. & Iliff, W. (2010). Artificial intelligence in video games: a survey. Available at http://www.cs.uni.edu/~schafer/courses/previous/161/Fall2010/proceedings…
LISP (1999). The lisp programming language. Available at http://groups.engin.umd.umich.edu/CIS/course.des/cis400/lisp/lisp.html
McCarthy, J. (2007). What is artificial intelligence? Available at http://www-formal.stanford.edu/jmc/whatisai
Neumann, G. (2002). Programming Languages in Artiﬁcial Intelligence. Available at http://www.dfki.de/~neumann/publications/new-ps/ai-pgr.pdf
PCAI (2012). LISP programming language. Available at http://www.pcai.com/web/ai_info/pcai_lisp.html
Russell, S.J. & P. Norvig. (1995). Artificial Intelligence – A Modern Approach. Prentice Hall, New Jersey. (Modified 15 September 2011)
ThinkQuest (2012). An introduction to the science of artificial intelligence. Available at http://library.thinkquest.org/2705/history.html and http://library.thinkquest.org/C001501/the_saga/compare.htm
Turing, A.M. (1950). Computing machinery and intelligence. Mind, 59, 433-460. Available at http://loebner.net/Prizef/TuringArticle.html
Wallace, R. (2005). Be your own botmaster. (2nd Edition). Available for purchase from http://www.alicebot.org/be.html
Weizenbaum, J. (1966). ELIZA–A Computer Program for the Study of Natural Language Communication Between Man and Machine. Communications of the ACM, 9 (1): 36-45. Available at http://www.cse.buffalo.edu/~rapaport/572/S02/weizenbaum.eliza.1966.pdf
AAAI. Association for the advancement of artificial intelligence. http://www.aaai.org
AI Hub Artificial Intelligence Hub. http://www.aihub.org
ALICEBOT Artificial Linguistic Internet Computer Entity. http://www.alicebot.org
Asimo. Asimoby honda: the worlds most advanced robot. http://asimo.honda.com
Britannica. Enclyclopedia britannica. http://www.britannica.com
Chatbots.org. Chatbots.org: forums, directories and more. http://www.chatbots.org
Guile 3D. Virtual assistant denise. http://www.guile3d.com
Hanson Robotics. Hanson Robotics. http://hansonrobotics.wordpress.com
iCub.org. iCub.org – an open source cognative humanoid robotic platform. http://www.icub.org
Pandorabots. Pandorabots. http://www.pandorabots.com
Sitepal. Sitepal. http://www.sitepal.com
Stanford. Singularity hub. http://singularityhub.com
Verbots. Verbot standard edition. http://www.verbots.com
ZabaWare. UltraHal assistant. http://www.zabaware.com
*Ahmad, S. (2007). Tutorial on natural language processing. Artificial Intelligence (810:161) Fall 2007. Retrieved on 4 September 2012 from http://citeseerx.ist.psu.edu/viewdoc
*ALICEBOT (2012). Artificial Linguistic Internet Computer Entity. Retrieved on 27 July 2012 from http://www.alicebot.org
*Asimo. (2012). Asimoby honda: the worlds most advanced robot. Retrieved on 8 September 2012 from http://asimo.honda.com
*Britannica. (2012). Enclyclopedia britannica. Retrieved on 10 September 2012 from http://www.britannica.com
*Chatbots.org. (2012). Chatbots.org: forums, directories and more. Retrieved on 10 September 2012 from http://www.chatbots.org
*Guile 3D. (2012). Virtual assistant denise. Retrieved on 10 September 2012 from http://www.guile3d.com
*Hanson Robotics. (2012). Hanson Robotics. Retrieved on 3 September 2012 from http://hansonrobotics.wordpress.com
*iCub.org. (2012). iCub.org – an open source cognative humanoid robotic platform. Retrieved on 12 September 2012 from http://www.icub.org
*Klemensen, T. & Iliff, W. (2010). Artificial intelligence in video games: a survey. Retrieved on 12 September 2012 from http://www.cs.uni.edu/~schafer/courses/previous/161/Fall2010/proceedings…
*LISP (1999). The lisp programming language. Retrieved on 25 August 2012 from http://groups.engin.umd.umich.edu/CIS/course.des/cis400/lisp/lisp.html
*Neumann, G. (2002). Programming Languages in Artiﬁcial Intelligence. Retrieved on 8 September 2012 from http://www.dfki.de/~neumann/publications/new-ps/ai-pgr.pdf
*Pandorabots. (2012). Pandorabots. Retrieved on 10 September 2012 from http://www.pandorabots.com
*PCAI (2012). LISP programming language. Retrieved on 29 August 2012 from http://www.pcai.com/web/ai_info/pcai_lisp.html
*Sitepal. (2012). Sitepal. Retrieved on 10 September 2012 from http://www.sitepal.com
*Stanford (2012). Singularity hub. Retrieved on 14 August 2012 from http://singularityhub.com/2011/08/18/100000-sign-up-for-stanfords-open-c…
*ThinkQuest (2012). An introduction to the science of artificial intelligence. Retrieved on 15 August 2012 from http://library.thinkquest.org/2705/history.html and http://library.thinkquest.org/C001501/the_saga/compare.htm
*Verbots. (2012). Verbot standard edition. Retrieved on 11 September 2012 from http://www.verbots.com
*ZabaWare (2012). UltraHal assistant. Retrieved on 8 August 2012 from http://www.zabaware.com