375
13.4
Analyse von Texten
die Aussagen einer Wahrsagerin). So wird die Illusion aufrechterhalten, mit einem mensch-
lichen Wesen zu sprechen.
Tabelle 13.7 enthält einige Beispiele für Chat Bots im Internet zum Ausprobieren.
Chats Bots sind heute mehr als eine Spielerei: Mit einem Sprachgenerator gekoppelt wer-
den sie (kommerziell) als Gesprächspartner zum Englisch-Lernen angeboten. Oder sie die-
nen als Auskunftsysteme.
13.4.2 Textanalyse mit einfachen Vorkommenstests
Als einfaches Beispiel eines Gesprächsroboters entwickeln wir ein System, das Fragen von
Bürgern an ihre Stadtverwaltung beantwortet. Man kann sich vorstellen, dass ein solches
Programm – in Form eines CGI-Skripts (siehe Kapitel 22) – über das Internet erreichbar ist.
Herzstück des Systems ist die Klasse
Beratung. Die »Intelligenz« steckt hauptsächlich in
der Methode
beantworte(), die eine möglichst sinnvolle Antwort auf eine eingegebene
Frage finden soll.
Skript:
Gesprächsroboter Bemerkung
Eliza
http://www-ai.ijs.si/eliza/
eliza.html
Der klassische Gesprächsroboter nach
J. Weizenbaum
Alice
http://alicebot.blogspot.com/
Alice wurde in einer speziellen Programmier-
sprache für Chat Bots entwickelt (AIML oder Artifi-
cial Intelligence Mark-up Language). Der Erfinder
von Alice, Richard Wallace, wurde für sein Projekt
mehrfach mit dem Loebner-Preis ausgezeichnet.
John Lennon
http://triumphpc.com/
johnlennon/index.shtml
Das John Lennon Artificial Intelligence Project
(JLAIP) hat einen Chatbot entwickelt, der in der
Redeweise des Ex-Beatles Fragen beantwortet.
Tabelle 13.7: Einige Chat Bots im Internet
# beratung.py
class Beratung(object):
z1 = 'Dafür ist das Einwohnermeldeamt zuständig.' #1
z2 = 'Wenden Sie sich bitte an das Straßenverkehrsamt.'
z3 = 'Ihr Ansprechpartner ist Frau Helf vom Standesamt.'
a1 = 'Am besten, Sie melden sich morgen noch einmal'
def beantworte(self, frage):
eingabe = frage.lower() #2
if eingabe.count('hochzeit') + \
eingabe.count('heirat') > 0: #3
return self.z3
Kapitel 13
Verarbeitung von Zeichenketten
376
Erläuterung:
#1: Für verschiedene Antwortmöglichkeiten werden Klassenattribute eingerichtet.
#2: Um die Vorkommenstests von der Groß- und Kleinschreibung unabhängig zu machen,
wird die Eingabe in einen String aus lauter kleinen Buchstaben umgewandelt.
#3: Wenn im Text Hochzeit oder Heirat vorkommt, ...
elif eingabe.count('kfz') + eingabe.count('auto') > 0:
return self.z2
elif eingabe.count('ausweis') + \
eingabe.count('pass') + \
eingabe.count('meld') > 0:
return self.z1
else: return self.a1
def __begruessen(self):
print('Herzlich willkommen bei der Bürgerberatung!')
print('Bitte geben Sie Ihren Nachnamen an.')
nachname = input('Nachname: ')
print('Wie soll ich Sie anreden,',
'Herr {0} oder Frau {0}?'.format(nachname))
eingabe = input(': ')
if 'frau' in eingabe.lower():
self.anrede = 'Frau ' + nachname
else:
self.anrede = 'Herr ' + nachname
def chat(self):
zufrieden = False
self.__begruessen()
print('Was kann ich für Sie tun, {}?'.format(
s e lf. a n red e )) #4
while not zufrieden:
eingabe = input(': ').lower()
if eingabe.count('nicht') + eingabe.count('danke') > 0:
zufrieden = True
e l se:
print(self.beantworte(eingabe))
print('Was kann ich noch für Sie tun, {}?'.format(
se l f.a n r e de) )
print('Auf Wiedersehen, {}.'.format(self.anrede))
chat = Beratung()
chat.chat()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.