Chatter bot returns 问题字符串反转时的错误响应
Chatter bot returns wrong response when question string reversed
yaml 文件:
- - Invalid Password
- contact xyz@gmail.com
我正在使用 python Chatterbot 库,如果我询问 无效密码 它 returns 回复联系 xyz@gmail.com,但是如果我问 密码无效 它给了我创建聊天机器人实例时设置的默认响应。
bot = ChatBot(
'Norman',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
input_adapter='chatterbot.input.TerminalAdapter',
output_adapter='chatterbot.output.TerminalAdapter',
logic_adapters=[
{
'import_path': 'my_logic_adapter.MyLogicAdapter',
"statement_comparison_function": "chatterbot.comparisons.JaccardSimilarity",
"response_selection_method": "chatterbot.response_selection.get_random_response",
'threshold': 0.65,
'default_response': 'I am sorry, but I do not understand.'
}
],
filters=["chatterbot.filters.RepetitiveResponseFilter"],
preprocessors=[
'chatterbot.preprocessors.clean_whitespace',
'chatterbot.preprocessors.unescape_html',
'chatterbot.preprocessors.convert_to_ascii'
],
database='./database.sqlite3',
trainer='chatterbot.trainers.ListTrainer'
)
bot.set_trainer(ListTrainer)
问题是 Chatterbot 将非结构化和未经训练的数据存储到 SQLite 数据库中。如果您输入反向字符串并且响应未存储在 YAML 文件中,它将无法理解,因此它会获取一些随机响应。您需要训练此类数据(增加频率)。另外据我了解,Jaccard Similarity 在这种情况下无济于事。
如果您只输入密码而没有在 YAML 中存储其他密码,那么我认为它会给出正确的答复。 Chatterbot 本身使用 NLP 创建,但您需要根据您的要求更改逻辑适配器的代码。
yaml 文件:
- - Invalid Password
- contact xyz@gmail.com
我正在使用 python Chatterbot 库,如果我询问 无效密码 它 returns 回复联系 xyz@gmail.com,但是如果我问 密码无效 它给了我创建聊天机器人实例时设置的默认响应。
bot = ChatBot(
'Norman',
storage_adapter='chatterbot.storage.SQLStorageAdapter',
input_adapter='chatterbot.input.TerminalAdapter',
output_adapter='chatterbot.output.TerminalAdapter',
logic_adapters=[
{
'import_path': 'my_logic_adapter.MyLogicAdapter',
"statement_comparison_function": "chatterbot.comparisons.JaccardSimilarity",
"response_selection_method": "chatterbot.response_selection.get_random_response",
'threshold': 0.65,
'default_response': 'I am sorry, but I do not understand.'
}
],
filters=["chatterbot.filters.RepetitiveResponseFilter"],
preprocessors=[
'chatterbot.preprocessors.clean_whitespace',
'chatterbot.preprocessors.unescape_html',
'chatterbot.preprocessors.convert_to_ascii'
],
database='./database.sqlite3',
trainer='chatterbot.trainers.ListTrainer'
)
bot.set_trainer(ListTrainer)
问题是 Chatterbot 将非结构化和未经训练的数据存储到 SQLite 数据库中。如果您输入反向字符串并且响应未存储在 YAML 文件中,它将无法理解,因此它会获取一些随机响应。您需要训练此类数据(增加频率)。另外据我了解,Jaccard Similarity 在这种情况下无济于事。
如果您只输入密码而没有在 YAML 中存储其他密码,那么我认为它会给出正确的答复。 Chatterbot 本身使用 NLP 创建,但您需要根据您的要求更改逻辑适配器的代码。