首页 > 编程语言 >Python3, 33行代码搞了一个聊天机器人, 这下再也不怕没人说话了。

Python3, 33行代码搞了一个聊天机器人, 这下再也不怕没人说话了。

时间:2023-10-18 13:04:10浏览次数:48  
标签:33 chatbot 机器人 聊天 input 屌丝 nltk Python3



Python制作聊天机器人

  • 1、引言
  • 2、实战
  • 2.1 准备
  • 2.2 介绍
  • 2.2.1 NLTK
  • 2.2.2 ChatterBot
  • 2.3 安装
  • 2.4 示例
  • 2.4.1 创建聊天机器人
  • 2.4.2 与用户交互
  • 3、总结


1、引言

小屌丝:鱼哥, 看这段代码

from chatterbot import ChatBot

# 创建聊天机器人
chatbot = ChatBot('MyBot')

# 加载语料库
with open('chatterbot.corpus.txt', 'r') as f:
    chatbot.train(f.read())

# 获取用户输入
user_input = input("You: ")

# 获取聊天机器人的回答
chatbot_response = chatbot.get_response(user_input)

# 输出聊天机器人的回答
print("Bot: " + chatbot_response)

小鱼:嗯 ,看了。

小屌丝:有啥感受?

小鱼:没啥感受。

小屌丝:那有啥感想?

小鱼:没啥感想。

小屌丝:那有啥想法?

小鱼:没啥想法。

小屌丝:这个可以有。

小鱼:这个… 真没有。

小屌丝:…

小鱼:…

小屌丝:请你吃 ci guo,

小鱼:那这个可以有。

Python3, 33行代码搞了一个聊天机器人, 这下再也不怕没人说话了。_机器人

小屌丝:确定可以有是吧。
小鱼:那必须的。
小屌丝:那就好办了, 鱼哥,写一个聊天机器人的教程。
小鱼:那吃几个ci guo?
小屌丝:5个吧。
小鱼:抠搜的。
小屌丝:拉倒吧, 一个 88, 5个可是我这一个月的零花钱。
小鱼:你想啊, 知识是无价,只用5个ci guo,就换一个聊天机器人的教程,多合算。
小屌丝:… 行, 行, 你别说了, 我请。
小鱼:嘿嘿… 嘿嘿…

2、实战

2.1 准备

说到聊天机器人,似乎给我们很高大上,很神秘的技能,
其实,并非这样,
今天,我们就来探究探究,聊天机器人,到底有多简单。

要想实现聊天机器人的功能,首先,我们要借助于2个三方库,即:

  • NLTK库:用于自然语言处理,包括分词、分词、词性标注等功能。
  • ChatterBot库:用于创建聊天机器人

其次,我们就来分两步:

  • 创建聊天机器人
  • 实现用户交互

最后,我们就搞起来。

2.2 介绍

2.2.1 NLTK

定义

  • NLTK库是一个开源自然语言处理库,包括了分词、分词、词性标注等功能。
  • 它是Python自然语言处理的核心库之一,被广泛应用于文本处理、语音识别、机器翻译等领域。

常用函数和类

  • nltk.download():用于下载NLTK库中的数据集和模块。
  • nltk.corpus:包含了许多常用语料库,例如Brown语料库、Web of Science语料库等。
  • nltk.tokenize:用于对文本进行分词。
  • nltk.word_tokenize:对文本进行分词。
  • nltk.pos_tag:用于对文本进行词性标注。
  • nltk.stem:用于对单词进行词干提取。
  • nltk.chat:用于创建聊天机器人。

2.2.2 ChatterBot

定义

  • ChatterBot库是一个基于Python的聊天机器人库,
  • 可以用于创建自然语言处理机器人;

常用方法

  • ChatBot:创建聊天机器人的类。
  • Train:用于训练聊天机器人的方法。
  • get_response:用于获取聊天机器人的回答的方法。
  • Corpus:用于加载和训练聊天机器人的语料库。

2.3 安装

知道了库,接下来我们就来安装,老规矩,直接pip安装

pip install nltk
pip install chatterbot

其余安装方式,可以参照这两篇:

2.4 示例

2.4.1 创建聊天机器人

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-07-12
# @Author : Carl_DJ

'''
实现功能:
    创建聊天机器人。
'''


import nltk
from chatterbot import ChatBot

# 加载语料库
nltk.download('stopwords')
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')

# 创建聊天机器人
chatbot = ChatBot('MyBot')

# 加载语料库
with open('chatterbot.corpus.txt', 'r') as f:
    chatbot.train(f.read())

# 定义回答规则
def get_answer(input_string):
    # 将输入字符串分成单词
    words = input_string.split()
    
    # 取出最常见的单词
    most_common_word = nltk.FreqDist(words).most_common(1)[0]
    
    # 检查最常见的单词是否是一个问题
    if most_common_word[0] in ['what', 'why', 'how']:
        return "I'm not sure. Can you please provide more context?"
    
    # 如果最常见的单词是一个名词,则回答关于该名词的问题
    elif most_common_word[0] in ['book', 'movie', 'song', 'artist']:
        return f"What's the name of {most_common_word[0]}?"
    
    # 如果最常见的单词是一个动词,则回答如何做该动词
    elif most_common_word[0] in ['eat', 'sleep', 'run', 'jump']:
        return f"How do you {most_common_word[0]}?"
    
    # 如果最常见的单词不是一个问题或名词,则回答一个随机回答
    else:
        return "I'm not sure. Can you please provide more context?"

2.4.2 与用户交互

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-07-12
# @Author : Carl_DJ

'''
实现功能:
    实现与用户交互。
'''


import nltk

while True:
    # 获取用户输入
    user_input = input("You: ")
    
    # 转换用户输入为小写
    user_input = user_input.lower()
    
    # 获取聊天机器人的回答
    chatbot_response = chatbot.get_response(user_input)
    
    # 将聊天机器人的回答转换为小写
    chatbot_response = chatbot_response.lower()
    
    # 输出聊天机器人的回答
    print("Bot: " + chatbot_response)
    
    # 检查是否需要退出
    if user_input == 'exit':
        break

3、总结

看到这里,今天的分享就结束了。
今天主要使用 nltk 和 chatterbot库,实现聊天机器人。

但是,这里,没有体现训练的内容,

也别着急, 小鱼会在下一篇安排上。

我是小鱼

  • 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注我,带你学习更多更专业更前言的Python技术。


标签:33,chatbot,机器人,聊天,input,屌丝,nltk,Python3
From: https://blog.51cto.com/u_15910936/7916366

相关文章

  • Python3,6行代码,搞定网络测速神器,我直接卸载某60测速器。
    6行代码搞定网络测速器1、引言2、代码实战2.1介绍2.1.1定义2.1.2常用方法2.1.3功能2.2安装2.3示例2.3.1测试上传下载速度2.3.2测试延迟2.3.3自定义服务器测试2.3.4多连接测试2.3.5实战3、总结1、引言小屌丝:鱼哥,你知道speedtest这个库吗?小鱼:嗯,知道一点点,咋了?小屌丝:那......
  • 31-33 插槽Slots
    基础也是用来进行组件间的数据传输(父传子),内容是模板的HTML内容进阶1.渲染作用域:父级组件传输动态内容,在父级组件中定义数据2.插槽默认值:插槽默认值,有内容传输过来的话,则不显示3.具名插槽:一个组件可以有多个插槽,为不同的插槽传输不同的内容,需要具体指定的名字name。......
  • Python36days
    进程基础(操作系统中的概念)进程调度算法(四种算法)进程的并行和并发的概念同步异步阻塞非阻塞的概念创建进程(进程类Process)Process类的参数Process类的方法如何开启多进程基于TCP协议的高并发程序————————————————————————————————————......
  • 课程概论与python3语法
    server端云盘:代替硬盘disk,存图片,视频,几百G、几TMysql:存代码,文本,几十GRedis:占用内存, client端WebStorageds内存 1、注释#......
  • 【Python微信机器人】第一篇:在windows11上编译python
    前言我打算写一个系列,内容是将python注入到其他进程实现inlinehook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜PC微信逆向。我......
  • centos 6.10 安装 python3.10.5 和 openssl1.1.1
    centos6.10安装python3.10.5和openssl1.1.1安装opensslcentos6.10自带的openssl版本太老了,要安装1.0.2以上的版本。如果不安装openssl,python的pip无法联网。下载wgethttps://link.juejin.cn/?target=https%3A%2F%2Fwww.openssl.org%2Fsource%2Fopenssl-1.1.1......
  • 企业微信群机器人发送消息(三)java端如何控制
    1.先在群里添加机器人,然后获取机器人的webhook地址:假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa2.有多种方式发送群消息,可以采用curl,也可以采用发送http请求的方式,我这里采用okhttp发送http请求,pom如下:<!--ht......
  • 笨办法学Python3 习题35 分支和函数
    XX.isdigit()内置函数检验数据是否为数字类型 ifchoice<'50': #50需要加引号,不然报错 游戏内容:用函数定义4个房间,分别是开始的房间1,房间1左边的熊房间2,房间1右边的恶魔房间3,以及熊旁边的金币房间4。定义一个失败退出的函数。开始房间1进去选择走左边还是右边,用......
  • 企业微信群机器人发送消息(二)机器人配置说明
    如何使用群机器人在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTPPOST请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key......
  • python35days
    Socket抽象层(Socket编程)基于TCP协议的借助socket可以编程客户端和服务端的程序链接循环通信循环基于UDP协议的套接字(soket)编程粘包现象如何解决粘包现象struck模块的使用——————————————————————————————————————————......