Python实现聊天机器人(基于ChatterBot)

废话不多说,直接上正题。

使用Python中的ChatterBot和Spacy库编写的简单聊天机器人:

首先,需要安装ChatterBot和Spacy库,可以使用以下命令:

 

复制插入

pip install chatterbot
pip install spacy
python -m spacy download en_core_web_sm

复制插入

接下来,我们需要导入所需的库:

 

python复制插入

from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
from chatterbot.comparisons import levenshtein_distance
from chatterbot.response_selection import get_random_response
from spacy.lang.en import English
from spacy.tokenizer import Tokenizer

复制插入

实例化一个聊天机器人:

 

python复制插入

chatbot = ChatBot('MyBot', 
                  logic_adapters=[
                      {
                          'import_path': 'chatterbot.logic.BestMatch',
                          'statement_comparison_function': levenshtein_distance,
                          'response_selection_method': get_random_response
                      }
                  ])

复制插入

为聊天机器人加载语料库:

 

python复制插入

corpus_trainer = ChatterBotCorpusTrainer(chatbot)
corpus_trainer.train('chatterbot.corpus.english.greetings',
                     'chatterbot.corpus.english.conversations')

复制插入

定义一个自定义逻辑适配器,使用Spacy来提取实体和关键字:

 

python复制插入

class SpacyAdapter:
    def __init__(self, **kwargs):
        self.nlp = English()
        self.tokenizer = Tokenizer(self.nlp.vocab)

    def process(self, statement):
        doc = self.nlp(statement.text)
        statement.entities = {}
        statement.keywords = []

        for ent in doc.ents:
            statement.entities[ent.label_] = ent.text

        for noun_chunk in doc.noun_chunks:
            statement.keywords.append(noun_chunk.text)

复制插入

将自定义逻辑适配器添加到聊天机器人中:

 

python复制插入

chatbot.logic_adapters.append(SpacyAdapter())

复制插入

最后,可以从命令行或Web界面与机器人进行交互:

 

python复制插入

while True:
    try:
        user_input = input("You: ")
        response = chatbot.get_response(user_input)
        print("Bot: ", response)

    except (KeyboardInterrupt, EOFError, SystemExit):
        break

复制插入

这是一个很简单的聊天机器人,可以根据需求进行更多的自定义和改进。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值