您的位置:首页 > 数据库 > Mongodb

ChatterBot聊天机器人教程02—MongoDB

2016-12-16 15:56 447 查看
安装篇

下载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



运行mongodb-win32-x86_64-2008plus-ssl-3.4.0-signed.msi,选择自定义安装

,选择安装目录。

配置相关文件(建议在安装目录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

配置MongoDB环境变量:编辑path,添加;安装目录:\MongoDB\Server\bin;

执行Mongo.conf文件,等待几分钟创建data文件完成



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

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



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



简单使用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()。

英语语料库训练。

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"

)

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

你的自定义训练类应该继承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",
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: