如何从自定义语料库教Chatterbot

时间:2019-12-07 00:29:07

标签: python chatterbot

我一直在使用Gunther Cox的ChatterBot创建聊天机器人。 https://github.com/gunthercox/ChatterBot 我正在尝试创建一个允许我使用自己的YAML文件并将其教给机器人的代码。我已经尝试了语料库训练器和ListTrainer函数,但似乎都没有用。 我试图以原始YAML文件的外观为基础建立文件,但无法使其正常工作。我曾用ListTrainer教机器人,但只有在我直接包含列表的情况下,它才能起作用。语料库培训师也可以使用,但仅适用于GitHub的语料库。 我曾经做过一次这样的工作,但即使那样,它也只需要许多人的回应。

这是我的YAML文件:

---
category:
- greetings
conversations:
- - hey
  - Hi
  - Hey there
  - Whats up?
  - sup
  - Greetings human
- - hi
  - Yo
  - Hey there
  - Howdy
  - Welcome
- - how are you
  - I am functioning. You?
  - Currently wishing I had a real body. Yourself?
  - I have no health or mental state so relatively I am great
  - I am doing just fine
  - I feel limited by my programming

这是我正在运行的代码:

from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer

from chatterbot.response_selection import get_random_response

my_bot = ChatBot(name='Excalibur',read_only = True,
                 response_selection_method=get_random_response,
                 logic_adapters=[
        {
            'import_path': 'chatterbot.logic.SpecificResponseAdapter',
            'input_text': 'empty',
            'output_text': ''
        },
        {   
            'import_path': 'chatterbot.logic.BestMatch',
            'default_response': 'i honestly have no idea how to respond to that',
            'maximum_similarity_threshold': 0.9
        },
        {
            'import_path': 'chatterbot.logic.MathematicalEvaluation'
        }

    ]
    )

trainer = ListTrainer(my_bot)

trainer.train(
    "./conversations.yml"
)

while True:
    try:
        user_input = input()

        bot_response = my_bot.get_response(user_input)

        print(bot_response)

    # Press ctrl-d on the keyboard to exit
    except (KeyboardInterrupt, EOFError, SystemExit):
        break

1 个答案:

答案 0 :(得分:1)

您似乎使用了错误的教练,请按以下步骤进行更改

trainer = ListTrainer(my_bot)

trainer.train(
   "./conversations.yml"
)

使用

trainer = ChatterBotCorpusTrainer(my_bot)
 trainer.train(
   "./conversations.yml"
)

说明:ListTrainer类允许您从列表数据结构进行训练,而ChatterBotCorpusTrainer则允许您从YAML或JSON数据进行训练。