Chatbot de correspondance de modèle de traitement du langage naturel basé sur AIML

AIML est un langage déclaratif basé sur la norme XML, qui spécifie les concepts de programmation et les structures de données qui peuvent être utilisés dans les robots. Nous définissons le mode et la réponse du chatbot en fonction du langage AIML (Artificial Intelligence Markup Language), et construisons un chatbot correspondant à des modèles.

Montrez comment créer et charger un fichier AIML dans le
chatbot et l'utiliser pour générer une réponse: 1.greeting_step1.aiml:

<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0.1"> 
<!--在 AIML 1.0 中,所有模式必须全大写-->
<category> 
 <pattern>HELLO ROSA </pattern> 
 <template>Hi there!</template> 
</category> 
<category> 
 <pattern>HELLO TROLL </pattern> 
 <template>Good one, human.</template> 
</category> 
</aiml>

2.greeting_step2.aiml :

<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0.1"> 
<!--使用模板中的<srai>标签和星号(*),将多个模式链接到同一个响应模板,以解-->
<!--决大部分匹配遗漏的问题。我们将这些模式视为“Hello”的同义词,即使它们可能是拼写错误或完全不同的词-->

<!--<star>标签用于匹配<pattern>标签中的通配符*字符-->
<category>
	<pattern>HELO * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category> 
<category>
	<pattern>HI * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category> 
<category>
	<pattern>HIYA * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category>
<category>
	<pattern>HYA * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category> 
<category>
	<pattern>HY * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category> 
<category>
	<pattern>HEY * </pattern>
	<template><srai>HELLO <star/> </srai></template>
</category> 
<category>
	<pattern>WHATS UP * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category> 
<category>
	<pattern>WHAT IS UP * </pattern>
	<template><srai>HELLO <star/></srai></template>
</category>
</aiml>

3. étape_de_soirée3.aiml :

<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0.1">
<!--
在 AIML 2.0 中,可以使用方括号列表来指定选择随机响应模板。而在 AIML 1.0 中,使用<li>
标签来执行此操作。<li>标签仅在<condition><random>标签内部使用。可以使用
<random>标签来帮助机器人在回复问候时显得更有创意一点儿,看起来不那么机械
-->
<category>
	<pattern>HELLO ROSA </pattern>
	<template> 
		<random> 
			<li>Hi Human!</li> 
			<li>Hello friend</li>
			<li>Hi pal</li> 
			<li>Hi!</li> 
			<li>Hello!</li> 
			<li>Hello to you too!</li> 
			<li>Greetings Earthling ;)</li> 
			<li>Hey you :)</li> 
			<li>Hey you!</li> 
		</random>
	</template> 
</category> 
<category>
	<pattern>HELLO TROLL </pattern>
	<template> 
		<random> 
			<li>Good one, Human.</li> 
			<li>Good one.</li> 
			<li>Nice one, Human.</li> 
			<li>Nice one.</li> 
			<li>Clever.</li> 
			<li>:)</li> 
		</random>
	</template> 
</category>
</aiml>

4.Python_AIML_interpreter.py:

import aiml_bot

bot = aiml_bot.Bot(learn='xxx\\greeting_step1.aiml')
# AIML 规范巧妙地忽略了标点符号和大小写
# 但是 AIML 1.0 规范只规范化模式的词结尾的标点符号,而不是词之间和词内部;
# 词之间的空白符,而不是词内部
print("Hello Rosa,:", bot.respond("Hello Rosa,"))
print("hello troll!!!:", bot.respond("hello troll!!!"))
print("hello ! troll!!!:", bot.respond("hello ! troll!!!"))
print("hello !!!troll!!!:", bot.respond("hello !!!troll!!!"))
print("hello **troll:", bot.respond("hello **troll"))
# 它无法处理同义词、拼写错误、带连字符的词或复合词
print("Helo Rosa:", bot.respond("Helo Rosa"))
print("Hello Ro-sa:", bot.respond("Hello Ro-sa"))

# 加载一个附加的 AIML,机器人就可以识别出“Hello”的几种不同的说法和错误拼写形式
bot.learn('xxx\\greeting_step2.aiml')
print("Hey Rosa:", bot.respond("Hey Rosa"))
print("Hi Rosa:", bot.respond("Hi Rosa"))
print("Helo Rosa:", bot.respond("Helo Rosa"))
print("HY troll!:", bot.respond("HY troll!"))
print("WHAT IS UP troll!:", bot.respond("WHAT IS UP troll!"))
print("hello **troll** !!!:", bot.respond("hello **troll** !!!"))
print("hello !!! troll!!!:", bot.respond("hello !!!troll!!!"))

# 使用<random>标签来帮助机器人在回复问候时显得更有创意一点儿
# 每次匹配模式时,它都会从列表中随机选择一个回复,无法在 aiml_bot 中设置随机种子
bot.learn('xxx\\greeting_step3.aiml')
print("Hey Rosa:", bot.respond("Hey Rosa"))
print("Hey Rosa:", bot.respond("Hey Rosa"))
print("Hey Rosa:", bot.respond("Hey Rosa"))

Je suppose que tu aimes

Origine blog.csdn.net/fgg1234567890/article/details/114233484
conseillé
Classement