- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Python 和 chatterbot 库创建一个简单的聊天机器人。我已经能够得到一些能够工作的东西,用户输入一些内容,机器人就会根据模式和响应的 .json
进行响应。
每次我执行时,机器人都能够判断用户输入的“标签”,并仅以以下格式进行相应响应: "patterns": ["cya", "See you later", "Goodbye", "I am离开", "祝你有美好的一天"],
但我希望它删除引号、逗号等,并随机选择一个响应。我试过这个标记化的东西吗?似乎不起作用
代码
## MODULES
from chatterbot import ChatBot #This imports the chatbot
from chatterbot.trainers import ListTrainer #Method used for training the chatbot
import chatterbot #Just in case
import os
## BOT VARIABLES
bot = ChatBot("Test") #This creates the chatbot and names it 'Test'
trainer = ListTrainer(bot) #Creates the trainer
data = "C:/Users/PAVILION/Desktop/ChatBotTest2/INTS/"
for files in os.listdir(data):
conv = open(data + files, 'r').readlines() #This opens the direrctory full of data
trainer.train(conv) #This trains the chatbot trainer with data from the directory
## CHATTERBOT OUTPUT
while True:
message = input("You: ")
if message.strip() != "Bye":
response = bot.get_response(message)
print("ChatBot: ", response)
if message.strip() == "Bye":
print("ChatBot: Farewell")
break
Intentions.json
{"intents": [
{"tag": "greeting",
"patterns": ["Hi", "How are you", "Is anyone there?", "Hello", "Good day", "Whats up"],
"responses": ["Hello!", "Good to see you again!", "Hi there, how can I help?"],
"context_set": ""
},
{"tag": "goodbye",
"patterns": ["cya", "See you later", "Goodbye", "I am Leaving", "Have a Good day"],
"responses": ["Sad to see you go :(", "Talk to you later", "Goodbye!"],
"context_set": ""
},
{"tag": "age",
"patterns": ["how old", "how old is tim", "what is your age", "how old are you", "age?"],
"responses": ["I am 18 years old!", "18 years young!"],
"context_set": ""
},
{"tag": "name",
"patterns": ["what is your name", "what should I call you", "whats your name?"],
"responses": ["You can call me Tim.", "I'm Tim!", "I'm Tim aka Tech With Tim."],
"context_set": ""
},
{"tag": "shop",
"patterns": ["Id like to buy something", "whats on the menu", "what do you reccommend?", "could i get something to eat"],
"responses": ["We sell chocolate chip cookies for $2!", "Cookies are on the menu!"],
"context_set": ""
},
{"tag": "hours",
"patterns": ["when are you guys open", "what are your hours", "hours of operation"],
"responses": ["We are open 7am-4pm Monday-Friday!"],
"context_set": ""
}
]
}
顺便说一句,json 是从 Tech with Tim 教程中获得的。
最佳答案
您可以通过删除顶级“意图”(不需要)并将列表加载到变量中,将该 json
加载到 python 对象中;
intents = [
{"tag": "greeting",
"patterns": ["Hi", "How are you", "Is anyone there?", "Hello", "Good day", "Whats up"],
"responses": ["Hello!", "Good to see you again!", "Hi there, how can I help?"],
"context_set": ""
},
# rest of json pasted here
]
然后,您可以使用 next
和 generator 访问列表中的 dict
。
selected_intent = next((i for i in intents if i['tag'] == 'greeting'), None)
现在,如果标签
是greeting
(在本例中),selected_intent
将是列表中的意图dict
),但如果没有意图具有该标记,它将返回 None
- 所以一定要处理这个问题。
您现在可以通过键访问意图 dict
的任何部分,例如selected_intent['patterns']
- 这将返回该标签的模式列表。所以你可以这样做;
import random
patterns = selected_intent['patterns']
return_pattern = patterns[ random.randint(0, len(patterns)-1) ]
print(return_pattern) # output: whats up
这将生成一个介于 0 和列表长度 -1 之间的随机 int
,它用作从列表中提取随机字符串的索引。
附:您的 if
语句可以用 else
block 来压缩,因为第二个 if 只是第一个 if 的逆。
if message.strip() != "Bye":
response = bot.get_response(message)
print("ChatBot: ", response)
else:
print("ChatBot: Farewell")
break
关于python - 如何分离 Chatterbot 的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58021767/
我想为使用 ChatterBot 库编写的聊天机器人指定一个特定问题的答案。这是我的代码 from chatterbot import ChatBot # Create a new chat bot
我的目标是编写某种会说西类牙语的聊天机器人。我见过简单的 python 聊天机器人的示例,但它们的答案大多只是随机的。我希望机器人能够部分理解问题并制定回应,例如 http://cleverbot.c
我正在尝试在网络上创建一个基于关键字的 Chatterbot。只需在输入中查找关键字并返回相关响应。 例子: User(Input): What is your phone number? Bot(O
当我在“安装构建依赖项”步骤后执行命令 pip install chatterbot 时,出现以下错误。有人可以告诉我如何纠正它或者有其他方法安装它吗? 错误: Command errored out
我的第一个 Telegram 聊天机器人(使用 Chatterbot 库完成)有问题。 我的项目由以下人员组成: 配置文件 要求(txt 文件) telegramtoken(txt 文件) 运行时(t
我正在使用 Python 和 chatterbot 库创建一个简单的聊天机器人。我已经能够得到一些能够工作的东西,用户输入一些内容,机器人就会根据模式和响应的 .json 进行响应。 每次我执行时,机
我现在遇到了几个问题,我几乎已经让 Chatterbot 示例可以在 Heroku 上运行 Django。 这是我的示例页面。 https://polar-basin-92507.herokuapp.
似乎可以通过指定位置路径来使用自定义语料库 json 文件。但是,我对如何完成感到困惑。 chatterbot 提供的示例不是很清楚。 http://chatterbot.readthedocs.io
在 Django 管理中,使用执行训练后,chatterbot 转换表为空 python管理.py训练 上面的代码使用基于 yml 文件的训练数据填充语句和响应表。这很好。 但是,在测试过程中,发布到
我正在尝试构建一个聊天机器人。所以我安装了 chatterbot 包。python 代码如下: from chatterbot import TalkWithCleverbot talk = Talk
我正在安装 Chatterbot,当我得到 Spacy 包时,出现了一个巨大的错误并关闭了 pip,我的电脑上只安装了 python 3.8 64 位 我用了pip install, pip -U 和
当 chatbot.get_response() 和 trainer.tain() 在英语字符串列表上时(完全相同的问题)时,我遇到问题。它说 OperationalError: no such co
我有以下使用Chatterbot第三方库的代码:。当我尝试使用代码时,从Visual Studio收到如下错误:。我安装了以下程序包:。我尝试了使用Python3.9和3.11以及Chatterbot
我有以下使用Chatterbot第三方库的代码:。当我尝试使用代码时,从Visual Studio收到如下错误:。我安装了以下程序包:。我尝试了使用Python3.9和3.11以及Chatterbot
我有以下使用Chatterbot第三方库的代码:。当我尝试使用代码时,从Visual Studio收到如下错误:。我安装了以下程序包:。我尝试了使用Python3.9和3.11以及Chatterbot
我是一名优秀的程序员,十分优秀!