ai and python: developing a conversational interface using python

Post on 11-May-2015

13.960 Views

Category:

Technology

10 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from PyOhio 7/25/2009:*Director's Cut* with Previously Unseen Deleted Scenes :-) 40 extra slides

TRANSCRIPT

Artificial Intelligence And Python:

Developing a Conversational Interface

using Python

Jerry Felix

Exposure to Conversational Interfaces

Have you leave convinced: Universally applicable today Need to take action

Examples! Personal goals:

Most memorable presentation Learn from the audience

Session Objectives

Motivation – Why should you care?

Tools and Resources

Technical bits and Program Samples

Open Source Future Direction

Session Format

Wisdom from my son:

“Dad, you’re lucky. When you were growing up, people had epic challenges.

Why doesn’t my generation have any?”

…the goal, before this

decade is out, of landing a man on the

moon…

What’s our epic challenge?

What stretch goal CAN we accomplish by 2019?

Two trends…

- Ray Kurzweil

Trend

#1

2.5 Search Words

3.3 Search Words

7 - 15 “Search”

Words

Search Now Uses More Than Search Words

2004 2009 2019

Location, Previous Searches

Location, Previous

Searches, Occupation, Hobbies,

ContextTr

end

#2

A $1000 computer = power of human brain.

People won’t search the internet,they’ll converse with it.

Good user interfaces will be conversational.

By 2019:

Why you should care!

Every interface. Every application.

Which “Nation” will create the first general purpose Conversational Interface?

Nation of Google? Nation of Bing? Nation of Ruby Developers? Nation of Java Developers?

Does it matter?

Our “Space Race”:

❝ I believe that this Python Developer nation should commit itself to achieving the goal, before this next decade is out, of creating a general purpose Conversational Interface. ❞

Read with Kennedy Accent:

Motivation – Why should you care?

Tools and Resources

Technical bits and Program Samples

Open Source Future Direction

Session Format

A Chat Bot that can respond “intelligently” to input.

Intelligence = Great input parsing Understanding of context Large knowledge base

What is a Conversational Interface?

What does a CI look like?

What does a CI look like?

2009 – today 2019 – in a decade

Text query / response Chat window Stationary virtual

character Response = f(single

input)

Internet-based

Voice and Video Conversation Facial expressions Context-driven

responses

Personal-device based

Started September 2008 Implemented in PayPal US, UK, France 650,000 conversations per month Saving $10M / year diverting call-center

calls1

Chatbots.org links to 375 such virtual people in the wild today

1 Assuming 20% of the conversations diverted calls averaging 12 minutes of time by $30/hour employees (fully loaded costs).

PayPal “Sarah”

Guide users through your site or application

Troubleshooting Wizards

Frequently Asked Questions (especially multi-part and contextual)

Think of your chat bot as a new Customer Service Rep who is in training

What Are they Good For?

Build a Conversational Interface to be added to municipal websites

• Handle FAQ’s• Guide users through the site

Introducing “Amy Iris”

Case Study

1. Language Parsing Tools – Parse it

2. Knowledge Base – Get Answer

3. Context Management – Store Context

4. User Experience and Server – Say it(Chat window and Character Graphic)

How to Create Your Own

Simple Example

Language Parsing Tools

Roll your own (i.e. “if pattern in textin:”)

Regular Expressions(re)

Artificial Intelligence Markup Language (AIML)

Natural Language Tool Kit (NLTK)

Simple version:if “spell kat” in textin.lower():

say(“Uh, C A T.”)

Advanced techniques: Normalize input

Remove punctuation, multiple spaces

Standardize case

Roll your own parsing

import re

# huge table of patterns:patterns =[ ('.*spell kat.*','UH, C A T.'), ] # later in program:for p in patterns: if re.match(p[0], textin): say (p[1]) # say() prints or

renders

Regular Expressions

❝ Some people,

when confronted with a problem,

think “I know, I’ll use regular expressions.”

Now they have two problems.❞

— Jamie Zawinski

Regular Expressions

XML with AI-specific tags Patterns and responses Serves its purpose well, for Chatterbot

definitions Not too difficult to learn Cumbersome freeform logic /

extensibility

AIML

A Chatterbot

Uses AIML

The basis for routinely winning the Chatterbot competitions

Open Source, freely licensable

A.L.I.C.E.

<category><pattern>

HOW DO YOU SPELL KAT</pattern><template>

Uh, C A T.</template>

</category>

AIML example

<category> <pattern> DO YOU KNOW HOW TO * </pattern> <template> <srai>HOW DO YOU

<star/></srai> </template></category>

AIML example

Download PyAIML Download ALICE definitions Edit AIML

Or use a service (some free, some paid)

Implementing AIML

Collection of tools Corpora Parsing, tokens,

chunking, parts of speech

Analysis: Collocation, semantics, metrics, probability, testing

Natural Language Tool Kit

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

From “Mat”, on stackoverflow.com

1. Language Parsing Tools – Parse it

2. Knowledge Base – Get Answer

3. Context Management – Store Context

4. User Experience and Server – Say it(Chat window and Character Graphic)

How to Create Your Own

Knowledge Base

List of answers AIML response SQL Database Lookup Website lookup

HTML parsing (Beautiful Soup) Semantic Web Application Programming Interfaces

(APIs) JSON or xml

1. Language Parsing Tools – Parse it

2. Knowledge Base – Get Answer

3. Context Management – Store Context

4. User Experience and Server – Say it(Chat window and Character Graphic)

How to Create Your Own

Context Management

AIML – limited context “that”, “it”, “topic”

NLTK has some basic tools for context management

User Experience

Today, chat window Graphic character Interface to mobile, twitter, social

networking Your server or Google App Engine Hosted solutions

Pandorabots, ysalaya.org, others

Tomorrow, voice recognition, additional interfaces

• Every “business oriented” bot creator needs a:• Parser• Knowledge Base• Context Manager• UI

Why not create an “Open Source” framework for best-in-class of each?

“Ah Ha!” Moment #1

Translator example

• Parse it• Get Answer• Update Context• Say it

Translator - Parse

match=re.match(r'(say|translate) (.*) (in|to|into) (\w+)',

textin)

Translator - Parse

match=re.match(r'(say|translate)

match.group(1) (.*) match.group(2) (in|to|into) match.group(3) (\w+)', match.group(4)

textin)

Translator – Get Answer

if match: c = urlfetch.fetch(

"http://ets.freetranslation.com/"+

"?language=english/"+ match.group(4)+"&srctext="+

match.group(2)).content c = c[c.index('--<br>')+7:] c = c[0:c.index('<p>')-6]

Translator – Say It

say(c + " is " + match.group(2) + " in “+match.group(4)+".")

Translator – Say It

say(c + "silla"" is " + is match.group(2) + "chair"" in “ in+match.group(4)+".")spanish.

Translate “I have an

emergency.” to Spanish

“I have an emergency.” in Spanish is “Tengo una

emergencia.”

UI

ParserKnowled

geBase

Context Manager

10 lines of Python code, plus a little open source…

…turned every phone into a English-Spanish translator

“Ah Ha!” Moment #2

10 lines of PythonTwitter

Python-Twitter

Translator Website

urllib2

Twitter API

Python

Why is this significant?

1. A Novice Python Programmer can turn every phone on the planet into a Universal Translator.

2. What happens if tens of thousands ofPython Programmers begin contributingto a Central Code repository? A General Purpose Conversational Interface emerges.

What Wikipedia did for Encyclopedias, Python Programmers can do for Artificial Intelligence.

COOL!

Translate “I have an

emergency.” to Spanish

“I have an emergency.” in Spanish is “Tengo una

emergencia.”

REAL COOL

!

What Wikipedia did for Encyclopedias,

Python Programmers can do for Artificial Intelligence.

Motivation – Why should you care?

Tools and Resources

Technical bits and Program Samples

Open Source Future Direction

Session Format

I’m building bots for municipalities Amy Iris is a byproduct

Django website Contributory Code Twitter Interface

Amy Iris is a contributory frameworksimilar to Wikipedia as a framework

Future Direction

Why was Wikipedia Successful?

Open Content LicenseFocus (on Encyclopedia)Openness (Anyone can contribute)Ease of EditingCollaborate Radically; don’t sign articlesOffer unedited, unapproved content for

further developmentNeutralityStart with a core of good peopleEnjoy the Google Effect

- Larry Sanger (early Wikipedia employee)

How to get involved:

• Follow @amyiris on Twitter

• Send email: amyiris@amyiris.com

• Online meetings begin next week.

• BACK UP SLIDES TO FOLLOW

API

Users can interact with Amy Iris through several interfaces:

- API- Website amyiris.com- Web Widget on your website- Twitter

Users “talk” to Amy Iris by typing something - A familiar chat-bot experience

User ContributedOpen Source

Code Snippets

API

ALICE

CodeCode

CodeCode

CodeCode

Amy Iris evaluates the user’s input, and sends it to ALICE, an award-winning Open Source chat-bot platform.

Amy Iris also launches some number of code snippets in a prioritized fashion, searching for a good response.

User ContributedOpen Source

Code Snippets

API

ALICE

TranslatorCode

CodeCode

CodeCode

Code

Translation

website

Code snippets can access the web to formulate their response

Snippets can scrape web page HTML to build an appropriate response

Amy Iris evaluates all responses that are provided, selects one “fastest response that’s good enough”, and presents it to the user

User ContributedOpen Source

Code Snippets

API

ALICE

Best Buy

snippet

CodeCode

CodeCode

CodeCode

Remix

Some forward-thinking companies already provide an API for access to their information

Snippets can call APIs to formulate a response

Remix is an API provided by Best Buy – an excellent example of a company who “gets it”

Smile if you’re getting it!

Amy Iris is:- A Conversational Interface that you can communicate with- Built with Open Source components, for a free experience- A repository system for user-contributed code

Users can- Communicate with Amy Iris through amyiris.com, an API, web

widgets, or Twitter

Developers can- Use the API to integrate Amy Iris into their applications- Use the Amy Iris widgets to put an Amy Iris interface onto their

web page- Build “applications” in Amy Iris, for Conversational Customer

Service- Make Amy Iris smarter by submitting Code Snippets into the

system

Translator example

index=str(textin).find("say")match=re.match(r'say (.*) in(\w+)',textin[index:])if match: c = urlfetch.fetch("http://ets.freetranslation.com/?

language=english/"+ match.group(4)+"&"+"mode=html&charset=UTF-

8&sequence=core&srctext="+ match.group(2).replace(" ","%20")).content c = c[c.index('--<br>')+7:] c = c[0:c.index('<p>')-6] say(unescape(c,{"&apos;": "'", "&quot;": '"'}) + " is " +

match.group(2) + " in "+match.group(4)+".") say(confidence=43)

User ContributedOpen Source

Code Snippets

API

ALICE

Best Buy

snippet

TranslatorCode

CodeCode

CodeCode

Code

Remix

Translation

website

We, the Python Developer Nation, can win this decade’s Space Race – Building a Conversational Interface to the Internet.

We have the tools: A language for the masses Natural Language Tool Kit (NLTK) Google App Engine

The Python Advantage

Invite your colleagues from the Nations of Java, Ruby C++, and .net to join our cause.

Our Dictator is Benevolent

The Nation of Python’s citizenship requirements are quick and painless…

Just leave your { braces } at the border.

We are an Open Nation

2005: AI can perform at human level intelligence on the SAT verbal analogy section. Link: http://www.kuro5hin.org/story/2005/5/26/192639/466

2009: Google adds contextual search Location Previous search terms

Our Sputnik?

Chat Bot approach (AIML, A.L.I.C.E. , PyAIML, Various Chatbots)

Natural Language Tool Kit (NLTK)

Search Engines growing up (Google, ASK, Bing “Decision Engine”, Yahoo, Cha Cha)

Semantic Web Efforts

Wordnet, AI efforts

Several Parallel Initiatives

Grammar Corpus / Corpora Parts of Speech Genre Parsing Inference Engine Domain Discourse

NLTK Concepts

<draw picture> User -> U.I. -> “Memoized” www pages // Parser -> WWW pages

Wrap pages with Semantic Web and API

Add in Context Show how it breaks down (search in

sentences)

Search Engine Analogy

Resources

Contest: Reward bots who fool human judges

Every entrant fooled at least one judge

Elbot fooled 25% of judges 30% is Alan Turing’s metric (“Turing

Test”) 12 small chat sessions are judged

October 2008 Loebner Prize

Judge: Good afternoon, how are you? Bot (?): good Bot (?): it's not afternoon yet Judge: I'm glad to hear that your well and your right, thanks for pointing that out Bot (?): no problem Bot (?): how are you? Judge: I'm well thanks, have you any plans for this afternoon? Bot (?): I'm not sure Bot (?): go home I guess Bot (?): and you? Judge: That sounds like a good initial plan but the weather should be good today and it would be sad to miss out Bot (?): that's true Bot (?): although the weather is not nice at the moment Bot (?): unless you like fog Judge: I have plans to iron and then maybe go out and do some fishing Bot (?): that's interesting - where do you go fishing? Judge: There is a local lake by the green park, it's quiet and relaxing Bot (?): can you eat the fish you catch? Judge: There are restrictions but one or two should be ok, I am keen to try perch

Bot or Not – Choice 1

Judge: Good afternoon, how are you? Bot (?): But I wouldn't say that any afternoon could be good. Judge: That's a bit pesamistic, I think any afternoon has the ability to be good Bot (?): Well, afternoon was your word. Judge: Are you able to see into the futureBot (?): How do you respond when people pose this question to you? Judge: I would hope that the answer was no, otherwise I would be interested to meet you Bot (?): Well, what will that solve? After all, the answer is only a matter of

perspective. Judge: That would depend on one's perspective Bot (?): Sorry for the tangent, but that reminds me of carefree robot summers spent depending on internal programming. Judge: Touchee Bot (?): With the inspirations you supply, there are no ends to my horizon... Judge: Have you any plans for later in the day Bot (?): This is confusing. Why bring the waking hours into this? Judge: Just curiosity and I hope that kill no cats Bot (?): That is truly one of the most inspirational qualities of humankind.

Even when things seems completely hopeless, you can still hope.

Bot or Not – Choice 2

$1,000 of computation = 1,000 times the human brain

Reverse engineering of the human brain completed

Computers pass the Turing test Nonbiological intelligence combines the subtlety

and pattern recognition strength of human intelligence, with the speed, memory, and knowledge sharing of machine intelligence

Nonbiological will continue to grow exponentially whereas biological intelligence is effectively fixed

2029: An intimate merger

- Ray Kurzweil

Amy Iris

Amy Iris is our Conversational Interface (CI). (think A.I. / chatterbots)

Responds to user input via web and phone. (think google/ cha cha / twitter)

Amy Iris is a framework for extending the CI in a collaborative manner. (think wikipedia)

If you consider Wikipedia as the greatest Library of knowledge every collaboratively created, my goal is for Amy Iris to emerge as the greatest Librarian of knowledge (and action).

Contributory Framework - Consider Wikipedia:

In 2008, a hugely valuable “End Product”; over 2 million articles

In 2001, started with 17-24 articles ;12%per month growth rate

The 2001 “genius” was not the 17-24 articles, it was the Contributory Framework

Current State of Conversational Interfaces Cha Cha (human powered)

Chatterbots Capable of carrying on an automated

conversation to some degree 1966, Eliza demonstrates technology, 100

lines of code 2006, A.L.I.C.E. advances technology, defines

standards, wins competitions. 20K patterns

“I believe that this nation should commit itself to achieving the goal, before this decade is out, of landing a man on the moon and returning him safely to the Earth.”

— President Kennedy, May 25, 1961

“We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard.”

— President Kennedy 1962 at Rice University

Lofty Goals = Achievements:

1980’s Lofty Goals…

2000’s Lofty Goals… ?

Even Assassination attempts were grandiose:

vs. a shoe toss?

top related