调用chatterbot和其中bot对话的时候总是会有一句警告?
我调用chatterbot然后和训练过的bot进行对话的时候,总是会在对话之间有一个"No value for search_text was available on the provided input"的句子,就像图里那样子:
代码的话就是最简单的一种,使用的代码如下:
from chatterbot import ChatBotfrom 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 Statementprint(chatbot.get_response(Statement(text='你好', search_text='你好')))
当然, 这里的seach_text
是提取的词干, 可以加速查询, 这种解决方案可能与你的意图不一致, 应该清晰地意识到search_text
是用来做什么的(文档并没有解释).
2.忽略该警告, 参考#1589, 加上这句:
import logginglogger = logging.getLogger()
logger.setLevel(logging.CRITICAL)
以上是 调用chatterbot和其中bot对话的时候总是会有一句警告? 的全部内容, 来源链接: utcz.com/a/161829.html