首页 理论教育 Python与AI编程技巧:自动问答系统训练及语音识别基础

Python与AI编程技巧:自动问答系统训练及语音识别基础

时间:2026-01-26 理论教育 景枫 版权反馈
【摘要】:首先我们使用自己建立的训练集来训练小机器人,使用ListTrainer可以把训练的对话语料直接放到代码里。其中user表示用户,前方无标注的为机器人,测试的结果如下。本章小结本章介绍了语音识别和文本分析的基本思路,读者需重点了解如何对语音进行特征提取和建立语音模型,如何采用Python程序调动系统自带的语音识别引擎工作;了解基于文本分词的自然语言统计和理解,以及相应Python程序的实现。

这里采用Python自带的基于机器学习的语音对话引擎ChatterBot,我们可以采用它自带的训练库进行对话训练,也可以自己写入新的训练集帮助它学习对话。ChatterBot独特的语言设计可以使它通过训练来用任何一种语言进行对话。该项目的开源代码链接:https://github.com/gunthercox/ChatterBot。

首先我们使用自己建立的训练集来训练小机器人,使用ListTrainer可以把训练的对话语料直接放到代码里。

from chatterbot import ChatBot

from chatterbot.trainers import ListTrainer #采用自己建立语料库的方式

my_bot=ChatBot("小C")#建立一个小机器人

my_bot.set_trainer(ListTrainer)#使用ListTrainer训练my_bot

#调用train()函数,离别参数为对话方式,注意用逗号分隔问答

my_bot.train([

"你叫什么名字?",

"我叫小C。",

"你多大了?",

"我还很年轻",

"你喜欢美食么?",

"我喜欢宫保鸡丁。你呢?",

"我喜欢冰激凌",

"啊,太凉了,吃多了肚子会疼的",

])

while True:

print(my_bot.get_response(input("user:")))

下面正式开始聊天。其中user表示用户,前方无标注的为机器人,测试的结果如下。

可以看出,对于训练过的语料以及相似的语料,小C都可以做出比较好的回答,但是如果超出了语料范围,小C就开始答非所问了。大家可以尝试一下这个程序,写入自己的语料库。(https://www.xing528.com)

也可以采用中文语料库ChatterBotCorpusTrainer进行训练,这个训练时间会比较长,测试代码如下。

from chatterbot import ChatBot

from chatterbot.trainers import ChatterBot CorpusTrainer

chatbot=ChatBot("全能小C")

chatbot.set_trainer(ChatterBotCorpusTrainer)

chatbot.train("chatterbot.corpus.chinese")

lineCounter=1

#开始对话

while True:

print(chatbot.get_response(input("("+str(lineCounter)+")user:")))

lineCounter+=1

可以看出,在训练过程中使用了多个领域的语料库,包括打招呼(greeting)、情感(emotion)、食物(food)等,而且小C会把前面学到的内容和交互过的内容存入学习库中。

但是,由于这个开源库中的语料库资源过少,也不能主动上网查询,因此很多问题它还是答非所问,要想使它能够做到回答和提问基本吻合,还需要做大量的工作

本章小结

本章介绍了语音识别和文本分析的基本思路,读者需重点了解如何对语音进行特征提取和建立语音模型,如何采用Python程序调动系统自带的语音识别引擎工作;了解基于文本分词的自然语言统计和理解,以及相应Python程序的实现。

本章习题

图示尝试调用系统自带的语音API,实现语音合成和语音识别。

图示尝试进行文本分析,判断不同作者的作品。

图示尝试建立自己的聊天语料库来训练小机器人。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈