ChatterBot聊天机器人教程02—MongoDB

  • 安装篇
  1. 下载Windows 版本 Mongodb 3.4.0,官方提供x32、x64。我使用mongodb-win32-x86_64-2008plus-ssl-3.4.0-signed.msi。地址:https://www.mongodb.com/download-center#community。

    ChatterBot聊天机器人教程02—MongoDB_第1张图片

  2. 运行mongodb-win32-x86_64-2008plus-ssl-3.4.0-signed.msi,选择自定义安装,选择安装目录。
  3. 配置相关文件(建议在安装目录MongoDB文件夹下,与Server同级目录),新建数据库目录\MongoDB\data,新建日志目录\MongoDB\logs,此目录中新建 mongodb.log 文件,新建配置文件\MongoDB\mongo.conf,内容如下:

    ##数据文件

    dbpath=E:\AppData\MongoDB\data

    ##日志文件

    logpath=E:\AppData\MongoDB\logs\mongodb.log

    ##错误日志采用追加模式

    logappend=true

    #启用日志文件,默认启用

    journal=true

    #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

    quiet=true

    #端口号默认为27017

    port=27017

  4. 配置MongoDB环境变量:编辑path,添加;安装目录:\MongoDB\Server\bin;
  5. 执行Mongo.conf文件,等待几分钟创建data文件完成

    注意:不要关闭这个cmd页面。

    浏览器地址栏输入:http://127.0.0.1:27017/出现下图表示配置成功

  6. 测试MongoDB运行状态,执行如下命令,测试成功

    ChatterBot聊天机器人教程02—MongoDB_第2张图片

  7. 简单使用MongoDB

  • 使用MongoDB

    设置storage_adapter参数:storage_adapter="chatterbot.storage.MongoDatabaseAdapter"

# -*- coding: utf-8 -*-

from chatterbot import ChatBot

importlogging

# Uncomment the following line to enable verbose logging

# logging.basicConfig(level=logging.INFO)

# Create a new ChatBot instance

bot = ChatBot('Terminal',

storage_adapter='chatterbot.storage.MongoDatabaseAdapter',

logic_adapters=[

'chatterbot.logic.BestMatch'

],

filters=[

'chatterbot.filters.RepetitiveResponseFilter'

],

input_adapter='chatterbot.input.TerminalAdapter',

output_adapter='chatterbot.output.TerminalAdapter',

database='chatterbot-database'

)

print('Type something to begin...')

whileTrue:

try:

bot_input = bot.get_response(None)

# Press ctrl-c or ctrl-d on the keyboard to exit

except (KeyboardInterrupt, EOFError, SystemExit):

break

在运行之前,要先确保MongoDB打开。

  • 训练

    chatterbot有自带的训练类,你也可以创建自己的。要使用训练类,你必须将其导入,调用方法train()之前调用方法set_trainer()。

  1. 英语语料库训练。

from chatterbot import ChatBot

from chatterbot.trainers import ChatterBotCorpusTrainer

chatbot = ChatBot("Ron Obvious")

chatbot.set_trainer(ChatterBotCorpusTrainer)

chatbot.train(

"chatterbot.corpus.english"

)

response = chatbot.get_response("I love you")

print(response)

运行结果:

指定语料库范围:

chatbot.train(

"chatterbot.corpus.english.greetings",

"chatterbot.corpus.english.conversations"

)

  1. Ubuntu dialog corpus:chatbot使用Ubuntu对话语料库数据进行训练。Ubuntu对话语料库在程序指定后首先要下载(比较大)和解压提取。

# -*- coding: utf-8 -*- Ubuntu语料库太大

from chatterbot import ChatBot

from chatterbot.trainers importUbuntuCorpusTrainer

# Uncomment the following line to enable verbose logging

# logging.basicConfig(level=logging.INFO)

# Create a new ChatBot instance

bot = ChatBot('Terminal',

storage_adapter='chatterbot.storage.MongoDatabaseAdapter',

logic_adapters=[

'chatterbot.logic.BestMatch'

],

filters=[

'chatterbot.filters.RepetitiveResponseFilter'

],

input_adapter='chatterbot.input.TerminalAdapter',

output_adapter='chatterbot.output.TerminalAdapter',

database='chatterbot-db1',

trainer="chatterbot.trainers.UbuntuCorpusTrainer"

)

bot.train()

print('Type something to begin...')

 

whileTrue:

try:

bot_input = bot.get_response(None)

 

# Press ctrl-c or ctrl-d on the keyboard to exit

except (KeyboardInterrupt, EOFError, SystemExit):

break

  1. 你的自定义训练类应该继承chatterbot.trainers.Trainer类。你的训练类将需要一个方法叫train(),可以执行你选择的任何参数。
  • 语料库

要了解哪些语言和语料库集可用,请查看存储库中的chatterbot / corpus / data目录。自定义语料库格式:*.corpus.json,*代表该类文件的类型。

例如conversations.corpus.json内容格式为:

{

"conversations": [

[

"早上好,你好吗?",

"我挺好的,你呢",

"我也还不错",

"那很好.",

"是啊."

],

[

"你听到新闻了吗?",

"什么新闻?"

],

 

 

[

"你是一个程序员吗?",

"我是个程序员",

"你使用什么语言呢?",

"我经常使用 Python, Java C++ .",

"我常使用 Python.",

"我不怎么喜欢 Java.",

"什么使你心烦?",

"它有许多不一致的地方"

],

[

"你爱我吗?",

"我对你的感情,是人类和bot之间独有的信任和友谊你可以把它叫做爱。"

]

]

}

  • 逻辑适配器

最佳匹配适配器:逻辑adater返回基于已知响应的输入语句最匹配的响应。

logic_adapters=[

'chatterbot.logic.BestMatch'

],

时间逻辑适配器:该TimeLogicAdapter返回当前时间。

数学适配器:计算数学相关问题。

具体的回应适配器:

# -*- coding: utf-8 -*-

fromchatterbotimportChatBot

 

# Create a new instance of a ChatBot

bot=ChatBot(

'Exact Response Example Bot',

storage_adapter='chatterbot.storage.JsonFileStorageAdapter',

logic_adapters=[

{

'import_path': 'chatterbot.logic.BestMatch'

},

{

'import_path': 'chatterbot.logic.SpecificResponseAdapter',

'input_text': 'Help me!',

'output_text': 'Ok, here is a link: http://chatterbot.rtfd.org/en/latest/quickstart.html'

}

],

trainer='chatterbot.trainers.ListTrainer'

)

 

# Get a response given the specific input

response=bot.get_response('Help me!')

print(response)

  • 输入输出适配器

终端适配器:输入终端适配器允许用户键入到它们的终端与聊天机器人进行通信。

input_adapter="chatterbot.input.TerminalAdapter"

微软机器人框架适配器:

chatbot=ChatBot(

"My ChatterBot",

input_adapter="chatterbot.input.Microsoft",

directline_host="https://directline.botframework.com",

dirctline_conversation_id="IEyJvnDULgn",

direct_line_token_or_secret="RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0",

)

你可能感兴趣的:(ChatterBot)