调用chatterbot和其中bot对话的时候总是会有一句警告?

我调用chatterbot然后和训练过的bot进行对话的时候,总是会在对话之间有一个"No value for search_text was available on the provided input"的句子,就像图里那样子:
图片描述

代码的话就是最简单的一种,使用的代码如下:

from chatterbot import ChatBot

from chatterbot.trainers import ChatterBotCorpusTrainer

chatbot = ChatBot("ChineseChatBot")

trainer = ChatterBotCorpusTrainer(chatbot)

trainer.train(

"chatterbot.corpus.chinese"

)

while True:

print(chatbot.get_response(input(">>>")))

想请问一下为什么会出现"No value for search_text was available on the provided input"这句话,怎么才能不让这句话出现?顺便再问一下,跑程序之前一定会有这个吗?关于nltk的东西:
图片描述

是win10+python3.6.8+chatterbot1.0.2
谢谢了

回答:

观察 chatterbot 项目的提交记录.

get_response()函数一开始设计的是只传入一个str类型的input_statement, 后面为了支持其它Adapter, 就允许传入一个Statement对象. Statement 原来只有text一个字段, 后来为了支持IndexedTextSearch就加入了search_text字段.

search_text原本是stem_text, 用于词干提取. 可以发现在#1474 上为Statement 添加了search_text 字段.
这个字段是用于加速查询速度的, 参考#1452.

注意search.py#L48,
如果你是向get_response()中传入一个字符串对象, 没有search_text字段, 那么一定会有警告抛出的. 但是应该不影响程序功能.

可以这样避免警告:
1.向get_response()函数传入一个有search_text属性的Statement对象:

from chatterbot.conversation import Statement

print(chatbot.get_response(Statement(text='你好', search_text='你好')))

当然, 这里的seach_text是提取的词干, 可以加速查询, 这种解决方案可能与你的意图不一致, 应该清晰地意识到search_text是用来做什么的(文档并没有解释).

2.忽略该警告, 参考#1589, 加上这句:

import logging

logger = logging.getLogger()

logger.setLevel(logging.CRITICAL)

以上是 调用chatterbot和其中bot对话的时候总是会有一句警告? 的全部内容, 来源链接: utcz.com/a/161829.html

回到顶部