chatterbot自定义mongodb的collection名称

chatterbot是一款不错的开源chatbot开发框架,特点简单易学,又十分实用,可以在短时间内开发一个基于检索的对话机器人。它本身提供了SQL和MongoDB的接口,不过之前在使用MongoDB存储对话数据的时候,发现chatterbot居然把数据库的collection name锁在了statement上,db name也锁了,好像是叫chatterbot-statement(没记错的话)。这样对于测试和发开很不方便,如果能将db name和collection作为参数在每次生成Chatbot实例的时候传入就好很多。

chatterbot原文件中storage目录下的mongodb.py文件有一行是这样写的,也就是作者在这里把collection给fix住了:

    #The mongo collection of statement documents
    self.statements = self.database['statement']

在看上面25-27行代码,他是通过kwargs.get开放的mongodb的uri接口:

self.database_uri = kwargs.get(
        'database_uri', 'mongodb://localhost:27017/chatterbot-database'
    )

照猫画虎,加上如下代码:

	self.database_name = kwargs.get(
         'database', 'chatterbot-database'
    )

    self.collection_name = kwargs.get(
        'statements', 'statement'
    )

再把fix住db和collection的代码改成:

self.database = self.client[self.database_name]
self.statements = self.database[self.collection_name]

就可以了。这样每次生成Chatbot实例的时候,可以灵活的指定不同的db和collection,方便chatbot的开发和实验。

另外,chatterbot的train方法,在传入训练集参数的路径时,可以是斜杠’/‘表示的路径,也可以是点号’.’,它自己tutorial里用的是点号(chatterbot框架里有将点号转换为传统路径表示法),一开始训练某个文件夹下的单一yml文件的确需要用点号或者斜杠写清楚,如果传入的是一个路径,那么路径下的所有yml文件都将被训练。

感觉chatterbot还是有很多地方需要慢慢研究,不过还是很感谢那些开源框架的开发者们!

你可能感兴趣的:(chatterbot自定义mongodb的collection名称)