背景
采用Filters可以有效地创建连接到 ChatterBot的storage adapters是的基查询(base queries )
如何为ChatterBot创建一个新的filter
以下代码是所有filter的框架,filter继承于ChatterBot的Filter类,并实现其名为filter_selection的函数。
示例代码:
from chatterbot.filters import Filter
class MyFilter(Filter):
def filter_selection(self, chatterbot):
# ...
return query
Filter Queries
Filters采用storage adapter的查询对象创建一个可以被adapter评估的查询。目前可用的查询方法有以下几种:
1:statement_text_equals(statement_text)
该查询方法返回当前查询和添加了约束文本属性的语句(该语句必须等于测试中指定的参数)。
2:statement_text_not_in(statements)
该查询方法接受一序列的文本语句,并返回带有约束属性的当前查询(其约束性是指所返回的语句不在指定的列表中)。
3:statement_response_list_contains(statement_text)
该查询方法接收的是单一的文本语句,其返回的当前查询是带有约束性,其约束性是指返回的语句必须包含指定的文本作为响应。
4:statement_response_list_equals(response_list)
该查询方法接收一序列的文本语句,返回带有约束性的当前查询,其约束性是指返回结果必须有一个完全匹配于响应值列表中。
Filter Support
并非所有的storage adapters都支持filter。当storage adapter 不支持filters时,filter所产生的查询在使用storage adapter中将被直接忽略。
storage adapter 只有在其支持查询的前提下才会支持 filters。你能够通过检查dapter_supports_queries 的属性是否为真,判断该storage adapte是否支持查询。
重复响应滤波器(Repetitive response filter)
函数定义:
chatterbot.filters.RepetitiveResponseFilter()
该滤波器用以消除潜在的重复响应,以避免chat bot多次重复已经的回答。
代码使用:
chatbot = ChatBot(
"My ChatterBot",
filters="chatterbot.filters.RepetitiveResponseFilter"
)