[ ChatterBot聊天机器人 ] ChatterBot训练数据以及使用三方语料库训练数据

Song • 1080 次浏览 • 0 个回复 • 2018年04月14日

训练

ChatterBot包含的工具有助于简化训练聊天机器人实例的过程。ChatterBot的训练过程涉及将示例对话框加载到聊天机器人的数据库中。这可以创建或构建代表已知语句和响应集的图数据结构。当一个聊天机器人训练师被提供一个数据集时,它会在聊天机器人的知识图中创建必要的条目,以便正确表示语句输入和响应。

ChatterBot训练语句图

ChatterBot内置了几个训练类。这些实用程序的范围从允许您根据代表对话的语句列表更新聊天机器人的数据库知识图到允许您根据预先载入的训练数据的语料训练您的机器人的工具。

你也可以创建自己的训练类。如果您希望训练您的机器人数据,且您的机器人存储格式尚未被下面列出的预建类别之一支持,则建议使用此功能。

一、设置训练类

ChatterBot附带内置的训练类,或者如果需要,您可以创建自己的训练类。要使用训练类,必须在调用train()之前将其导入set_trainer()方法。

二、训练类

1、通过列表数据进行训练

chatterbot.trainers.ListTrainer(storage, **kwargs)

允许使用对话字符串列表来训练ChatBot

对于训练过程,您需要传递一个语句列表,其中每个语句的顺序基于其在给定对话中的位置。

例如,如果你使用如下语言进行训练,则当你输入Hi there!或者Greetings!的时候机器人会回复你Hello

from chatterbot.trainers import ListTrainer

chatterbot = ChatBot("Training Example")
chatterbot.set_trainer(ListTrainer)

chatterbot.train([
    "Hi there!",
    "Hello",
])

chatterbot.train([
    "Greetings!",
    "Hello",
])

您还可以提供更长的训练对话清单。这将在列表中建立每个项目作为响应。

chatterbot.train([
    "How are you?",
    "I am good.",
    "That is good to hear.",
    "Thank you",
    "You are welcome.",
])

2、使用语料库数据进行训练

chatterbot.trainers.ChatterBotCorpusTrainer(storage, **kwargs)

允许使用来自ChatterBot对话语料库的数据训练聊天机器人。

ChatterBot附带一个数据语料库和实用程序模块,可以很容易地快速训练您的机器人进行交流。为此,只需指定要使用的语料库数据模块即可。

from chatterbot.trainers import ChatterBotCorpusTrainer

chatterbot = ChatBot("Training Example")
chatterbot.set_trainer(ChatterBotCorpusTrainer)

chatterbot.train(
    "chatterbot.corpus.english"
)

3、指定语料库范围

也可以一次导入ChatterBot语料库的各个子集。例如,如果您只希望根据英文问候语和对话语料进行训练,那么您只需指定它们即可。

chatterbot.train(
    "chatterbot.corpus.english.greetings",
    "chatterbot.corpus.english.conversations"
)

在调用train方法时,您还可以指定文件路径到语料库文件或语料库文件的目录。

chatterbot.train(
    "./data/greetings_corpus/custom.corpus.json",
    "./data/my_corpus/"
)

4、使用Twitter API进行训练

chatterbot.trainers.TwitterTrainer(storage, **kwargs)

允许使用从Twitter收集的数据训练聊天机器人。

参数:

  • random_seed_word - 用于从Twitter API获取随机推文的种子词。该参数是可选的。默认情况下,它是“随机”一词。
  • twitter_lang - 作为ISO 639-1代码的结果语言。该参数是可选的。默认值为None(所有语言)。

使用您的Twitter帐户创建一个新的应用程序。一旦创建,它将为您提供使用Twitter API所需的以下凭据。

参数 描述
twitter_consumer_key Twitter应用的消费者密钥。
twitter_consumer_secret Twitter应用程序的消费者秘密。
twitter_access_token_key 访问twitter应用程序的令牌密钥。
twitter_access_token_secret 访问Twitter应用程序的令牌密钥。

5 、Twitter训练示例

# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from settings import TWITTER
import logging

'''
This example demonstrates how you can train your chat bot
using data from Twitter.

To use this example, create a new file called settings.py.
In settings.py define the following:

TWITTER = {
    "CONSUMER_KEY": "my-twitter-consumer-key",
    "CONSUMER_SECRET": "my-twitter-consumer-secret",
    "ACCESS_TOKEN": "my-access-token",
    "ACCESS_TOKEN_SECRET": "my-access-token-secret"
}
'''

# Comment out the following line to disable verbose logging
logging.basicConfig(level=logging.INFO)

chatbot = ChatBot(
    "TwitterBot",
    logic_adapters=[
        "chatterbot.logic.BestMatch"
    ],
    input_adapter="chatterbot.input.TerminalAdapter",
    output_adapter="chatterbot.output.TerminalAdapter",
    database="./twitter-database.db",
    twitter_consumer_key=TWITTER["CONSUMER_KEY"],
    twitter_consumer_secret=TWITTER["CONSUMER_SECRET"],
    twitter_access_token_key=TWITTER["ACCESS_TOKEN"],
    twitter_access_token_secret=TWITTER["ACCESS_TOKEN_SECRET"],
    trainer="chatterbot.trainers.TwitterTrainer"
)

chatbot.train()

chatbot.logger.info('Trained database generated successfully!')

使用Ubuntu对话语料库进行训练

警告 Ubuntu对话语料库是一个海量数据集。当使用这个语料库时,开发者目前会遇到显着下降的表现,其形式是来自聊天机器人的延迟训练和响应时间。

chatterbot.trainers.UbuntuCorpusTrainer(storage, **kwargs)

允许chatbots使用来自Ubuntu Dialog Corpus的数据进行训练。

此训练类使您可以使用Ubuntu对话语料库来训练您的聊天机器人。由于Ubuntu对话语料库的文件大小,下载和训练过程可能需要相当长的时间。

此训练类将处理下载压缩语料库文件并提取它的过程。如果该文件已被下载,则不会再次下载。如果文件已被提取,则不会再提取。

三、创建一个新的训练类

您可以创建一个新的训练器,从您自己的数据文件中训练您的聊天机器人。如果您想以ChatterBot不直接支持的格式从数据源训练聊天工具,您可以选择这样做。

你的自定义教练应该继承chatterbot.trainers.Trainer类。你的训练器需要有一个名为train的方法,它可以接受你选择的任何参数。


原创文章,转载请注明 :[ ChatterBot聊天机器人 ] ChatterBot训练数据以及使用三方语料库训练数据 - pytorch中文网
原文出处: https://ptorch.com/news/154.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
Pytorch是什么?关于Pytorch! pytorch如何将Variable数据转化为Tensor数据