首页 > 解决方案 > 如何使用默认消息让我的 Chatterbot 回复?

问题描述

我希望我的 ChatterBot 逻辑适配器在用户的请求低于某个置信度分数(例如 80%)时使用默认响应。

from chatterbot import ChatBot

chatbot = ChatBot(
    'MyChatBot',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    logic_adapters=[
        'chatterbot.logic.BestMatch',
        {
            'import_path': 'chatterbot.logic.BestMatch',
            'default_response': 'I am sorry. I am still learning!',
            'maximum_similarity_threshold': 0.80
        }
    ],
    # database_uri='sqlite:///database.sqlite3'
)

# Training With Own Questions 
from chatterbot.trainers import ListTrainer
trainer = ListTrainer(chatbot)
training_data1 = open('training_data/stories.txt').read().splitlines()
training_data2 = open('training_data/places.txt').read().splitlines()
training_data3 = open('training_data/questions.txt').read().splitlines()
training_data4 = open('training_data/personal.txt').read().splitlines()

training_data = training_data1 + training_data2 + training_data3 + training_data4
trainer.train(training_data)

# Training With Corpus
from chatterbot.trainers import ChatterBotCorpusTrainer
trainer_corpus = ChatterBotCorpusTrainer(chatbot)
trainer_corpus.train(
    'chatterbot.corpus.english'
)

我使用以下方法来获取机器人的响应,但它根本没有使用 default_response 值。

def get_bot_response():
    userText = request.args.get('msg')
    if userText.confidence < maximum_similarity_threshold:
       return str(chatbot.default_response)
    else:
       return str(chatbot.get_response(userText))

标签: pythonchatbotchatterbot

解决方案


您正在使用chatterbot.logic.BestMatch两次。

只留下 { } 之间的内容,如下所示:

logic_adapters=[
    {
        'import_path': 'chatterbot.logic.BestMatch',
        'default_response': 'I am sorry. I am still learning!',
        'maximum_similarity_threshold': 0.80
    }
],

推荐阅读