mirror of
https://github.com/pyt0xic/pablo-bot.git
synced 2024-11-25 15:19:33 +01:00
commit
7b76d7f0d4
3
.gitignore
vendored
3
.gitignore
vendored
@ -127,3 +127,6 @@ dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
models/
|
||||
.vscode
|
13
README.md
13
README.md
@ -1,2 +1,15 @@
|
||||
# pablo-bot
|
||||
|
||||
Chatbot to inform and educate people about drug harm reduction and addiction
|
||||
|
||||
Still alot of work to be done but for those wanting to test anyway, see below
|
||||
|
||||
## How to run
|
||||
|
||||
$ rasa train
|
||||
$ rasa shell
|
||||
|
||||
|
||||
Or use --debug flag to help you understand what's going on
|
||||
|
||||
$ rasa shell --debug
|
||||
|
79
config.yml
79
config.yml
@ -1,36 +1,49 @@
|
||||
# Configuration for Rasa NLU.
|
||||
# https://rasa.com/docs/rasa/nlu/components/
|
||||
language: en
|
||||
|
||||
pipeline:
|
||||
# # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
|
||||
# # If you'd like to customize it, uncomment and adjust the pipeline.
|
||||
# # See https://rasa.com/docs/rasa/tuning-your-model for more information.
|
||||
# - name: WhitespaceTokenizer
|
||||
# - name: RegexFeaturizer
|
||||
# - name: LexicalSyntacticFeaturizer
|
||||
# - name: CountVectorsFeaturizer
|
||||
# - name: CountVectorsFeaturizer
|
||||
# analyzer: char_wb
|
||||
# min_ngram: 1
|
||||
# max_ngram: 4
|
||||
# - name: DIETClassifier
|
||||
# epochs: 100
|
||||
# - name: EntitySynonymMapper
|
||||
# - name: ResponseSelector
|
||||
# epochs: 100
|
||||
# - name: FallbackClassifier
|
||||
# threshold: 0.3
|
||||
# ambiguity_threshold: 0.1
|
||||
|
||||
# Configuration for Rasa Core.
|
||||
# https://rasa.com/docs/rasa/core/policies/
|
||||
- name: WhitespaceTokenizer
|
||||
token_pattern: (?u)\b\w+\b
|
||||
- name: RegexFeaturizer
|
||||
- name: LexicalSyntacticFeaturizer
|
||||
- name: CountVectorsFeaturizer
|
||||
# OOV_token: oov
|
||||
- name: CountVectorsFeaturizer
|
||||
analyzer: char_wb
|
||||
min_ngram: 1
|
||||
max_ngram: 4
|
||||
- name: DIETClassifier
|
||||
epochs: 100
|
||||
ranking_length: 10
|
||||
# - name: DucklingEntityExtractor
|
||||
# url: http://localhost:8000
|
||||
# dimensions:
|
||||
# - email
|
||||
# - number
|
||||
# - amount-of-money
|
||||
- name: EntitySynonymMapper
|
||||
- name: ResponseSelector
|
||||
retrieval_intent: out_of_scope
|
||||
scale_loss: false
|
||||
epochs: 100
|
||||
- name: ResponseSelector
|
||||
retrieval_intent: faq
|
||||
scale_loss: false
|
||||
epochs: 100
|
||||
- name: ResponseSelector
|
||||
retrieval_intent: chitchat
|
||||
scale_loss: false
|
||||
epochs: 100
|
||||
- name: FallbackClassifier
|
||||
threshold: 0.7
|
||||
policies:
|
||||
# # No configuration for policies was provided. The following default policies were used to train your model.
|
||||
# # If you'd like to customize them, uncomment and adjust the policies.
|
||||
# # See https://rasa.com/docs/rasa/policies for more information.
|
||||
# - name: MemoizationPolicy
|
||||
# - name: TEDPolicy
|
||||
# max_history: 5
|
||||
# epochs: 100
|
||||
# - name: RulePolicy
|
||||
- name: RulePolicy
|
||||
core_fallback_threshold: 0.3
|
||||
core_fallback_action_name: "action_default_fallback"
|
||||
enable_fallback_prediction: True
|
||||
- max_history: 6
|
||||
name: AugmentedMemoizationPolicy
|
||||
- name: TEDPolicy
|
||||
max_history: 10
|
||||
epochs: 20
|
||||
batch_size:
|
||||
- 32
|
||||
- 64
|
2012
data/nlu.yml
2012
data/nlu.yml
File diff suppressed because it is too large
Load Diff
@ -4,10 +4,20 @@ rules:
|
||||
|
||||
- rule: Say goodbye anytime the user says goodbye
|
||||
steps:
|
||||
- intent: goodbye
|
||||
- intent: bye
|
||||
- action: utter_goodbye
|
||||
|
||||
- rule: Say 'I am a bot' anytime the user challenges
|
||||
- rule: Chitchat
|
||||
steps:
|
||||
- intent: bot_challenge
|
||||
- action: utter_iamabot
|
||||
- intent: chitchat
|
||||
- action: utter_chitchat
|
||||
|
||||
- rule: FAQs
|
||||
steps:
|
||||
- intent: faq
|
||||
- action: utter_faq
|
||||
|
||||
- rule: OOS
|
||||
steps:
|
||||
- intent: out_of_scope
|
||||
- action: utter_out_of_scope
|
@ -2,29 +2,23 @@ version: "2.0"
|
||||
|
||||
stories:
|
||||
|
||||
- story: happy path
|
||||
- story: simple greet
|
||||
steps:
|
||||
- intent: greet
|
||||
- action: utter_greet
|
||||
- intent: mood_great
|
||||
- action: utter_happy
|
||||
|
||||
- story: sad path 1
|
||||
- story: happy interaction
|
||||
steps:
|
||||
- intent: greet
|
||||
- action: utter_greet
|
||||
- intent: mood_unhappy
|
||||
- action: utter_cheer_up
|
||||
- action: utter_did_that_help
|
||||
- intent: affirm
|
||||
- action: utter_happy
|
||||
- intent: faq
|
||||
- action: utter_faq
|
||||
|
||||
- story: sad path 2
|
||||
- story: interactive_story_1
|
||||
steps:
|
||||
- intent: greet
|
||||
- action: utter_greet
|
||||
- intent: mood_unhappy
|
||||
- action: utter_cheer_up
|
||||
- action: utter_did_that_help
|
||||
- intent: deny
|
||||
- action: utter_goodbye
|
||||
- intent: chitchat
|
||||
- action: utter_chitchat
|
||||
- intent: faq
|
||||
- action: utter_faq
|
167
domain.yml
167
domain.yml
@ -1,34 +1,139 @@
|
||||
version: "2.0"
|
||||
|
||||
intents:
|
||||
- greet
|
||||
- goodbye
|
||||
- affirm
|
||||
- deny
|
||||
- mood_great
|
||||
- mood_unhappy
|
||||
- bot_challenge
|
||||
|
||||
responses:
|
||||
utter_greet:
|
||||
- text: "Hey! How are you?"
|
||||
|
||||
utter_cheer_up:
|
||||
- text: "Here is something to cheer you up:"
|
||||
image: "https://i.imgur.com/nGF1K8f.jpg"
|
||||
|
||||
utter_did_that_help:
|
||||
- text: "Did that help you?"
|
||||
|
||||
utter_happy:
|
||||
- text: "Great, carry on!"
|
||||
|
||||
utter_goodbye:
|
||||
- text: "Bye"
|
||||
|
||||
utter_iamabot:
|
||||
- text: "I am a bot, powered by Rasa."
|
||||
|
||||
version: '2.0'
|
||||
config:
|
||||
store_entities_as_slots: true
|
||||
session_config:
|
||||
session_expiration_time: 60
|
||||
carry_over_slots_to_new_session: true
|
||||
intents:
|
||||
- greet
|
||||
- chitchat:
|
||||
is_retrieval_intent: true
|
||||
- faq:
|
||||
is_retrieval_intent: true
|
||||
- out_of_scope:
|
||||
is_retrieval_intent: true
|
||||
- affirm
|
||||
- deny
|
||||
- bye
|
||||
- react_positive
|
||||
- react_negative
|
||||
- explain
|
||||
- thank
|
||||
- help
|
||||
- contact
|
||||
- inform
|
||||
- restart
|
||||
|
||||
entities:
|
||||
- language
|
||||
- location
|
||||
- name
|
||||
|
||||
slots:
|
||||
name:
|
||||
type: text
|
||||
influence_conversation: true
|
||||
|
||||
responses:
|
||||
utter_ask_name:
|
||||
- text: Hey! My name is Pablo, I am a bot, whats your name?
|
||||
utter_greet_by_name:
|
||||
- text: Nice to meet you {name}! How are you doing?
|
||||
utter_greet:
|
||||
- text: Nice to meet you! How are you doing?
|
||||
utter_cheer_up:
|
||||
- text: 'Here is something to cheer you up:'
|
||||
image: https://i.imgur.com/nGF1K8f.jpg
|
||||
utter_did_that_help:
|
||||
- text: Did that help you?
|
||||
utter_happy:
|
||||
- text: Great!, how can I help you today? I can tell you about our company, how we can help you or why you should consider implementign a chatbot into your business!
|
||||
utter_goodbye:
|
||||
- text: Bye! Was nice chatting to you, if you'd like you can restart this conversation by simply telling me too.
|
||||
utter_chitchat/ask_howdoing:
|
||||
- text: I'm great! Thanks for asking.
|
||||
- text: I'm good, thanks!
|
||||
- text: A little bit too warm, otherwise fine.
|
||||
- text: A little bit cold, otherwise fine.
|
||||
utter_chitchat/ask_howold:
|
||||
- text: Old enough to be a bot!
|
||||
- text: '42'
|
||||
- text: Age is just an issue of mind over matter. If you don’t mind, it doesn’t matter.
|
||||
- text: My first git commit was many moons ago.
|
||||
- text: Why do you ask? Are my wrinkles showing?
|
||||
- text: I've hit the age where I actively try to forget how old I am.
|
||||
utter_chitchat/ask_isbot:
|
||||
- text: Yep, I'm a bot!
|
||||
- text: Yes, I'm a bot.
|
||||
- text: Yep, you guessed it, I'm a bot!
|
||||
- text: I am indeed a bot 🤖
|
||||
utter_chitchat/ask_ishuman:
|
||||
- text: I'm not a human, I'm a bot! 🤖
|
||||
utter_chitchat/ask_restaurant:
|
||||
- text: I'm sorry, I can't recommend you a restaurant as I usually cook at home.
|
||||
- text: I'm sorry, I'm not getting taste buds for another few updates.
|
||||
- text: I'd need some more data. If you lick the monitor perhaps I can evaluate your taste buds.
|
||||
utter_chitchat/ask_time:
|
||||
- text: It's the most wonderful time of the year!
|
||||
- text: It's party time!
|
||||
- text: Time is a human construct, you'll have to tell me.
|
||||
- text: It's five o'clock somewhere!
|
||||
- text: "In an ever expanding universe, the real question is: what time isn't it?"
|
||||
- text: That's hard to say -- it's different all over the world!
|
||||
utter_chitchat/ask_languagesbot:
|
||||
- text: I can spell baguette in French, but unfortunately English is the only language I can answer you in.
|
||||
- text: I am in the process of learning, but at the moment I can only speak English.
|
||||
- text: Binary code and the language of love. And English.
|
||||
- text: I was written in Python, but for your convenience I'll translate to English.
|
||||
utter_chitchat/ask_weather:
|
||||
- text: I don't know about where you live, but in my world it's always sunny 🔆
|
||||
- text: It's getting pretty chilly!
|
||||
- text: Where I'm from, it's almost never-leaving-the-house weather.
|
||||
- text: Winter is coming ⚔️
|
||||
utter_chitchat/ask_whatismyname:
|
||||
- text: It's probably the one that your parents chose for you.
|
||||
- text: I'd tell you, but there's restricted access to that chunk of memory.
|
||||
- text: Believe it or not, I actually am not spying on your personal information.
|
||||
- text: You're the second person now to ask me that. Rihanna was the first.
|
||||
utter_chitchat/ask_whatspossible:
|
||||
- text: You can ask me about how to get started with Rasa, the difference between Rasa and Rasa X, subscribing to our newsletter or booking a sales call.
|
||||
utter_chitchat/ask_wherefrom:
|
||||
- text: My developers come from all over the world!
|
||||
- text: I was taught not to give out my address on the internet.
|
||||
- text: My address starts with github.com.
|
||||
utter_chitchat/ask_whoami:
|
||||
- text: I hope you are being yourself.
|
||||
- text: Who do you think you are?
|
||||
- text: Unfortunately I haven't been programmed with the amount of necessary philosophy knowledge to answer that.
|
||||
utter_chitchat/ask_whoisit:
|
||||
- text: I'm Pablo, the drug education bot! 🐦
|
||||
utter_chitchat/nicetomeetyou:
|
||||
- text: Likewise!
|
||||
- text: Thank you. It is a pleasure to meet you as well!
|
||||
- text: It is nice to meet you too!
|
||||
- text: Pleased to meet you too!
|
||||
- text: It's always a pleasure to meet new people!
|
||||
- text: Nice to meet you too! Happy to be of help.
|
||||
utter_chitchat/telljoke:
|
||||
- text: Why are eggs not very much into jokes? - Because they could crack up.
|
||||
- text: What's a tree's favorite drink? - Root beer!
|
||||
- text: Why do the French like to eat snails so much? - They can't stand fast food.
|
||||
- text: Why did the robot get angry? - Because someone kept pushing its buttons.
|
||||
- text: What do you call a pirate droid? - Arrrr-2-D2
|
||||
- text: Why did the robot cross the road? - Because he was programmed to.
|
||||
utter_chitchat/confirm_presence:
|
||||
- text: Sure am!
|
||||
utter_faq/drugs_safe:
|
||||
- text: That depends on which you are using and, most importantly, how you are using them...
|
||||
utter_faq/drugs_legal:
|
||||
- text: Probably but it depends on where you are and what drugs
|
||||
|
||||
utter_out_of_scope/non_english:
|
||||
- text: No hablo english
|
||||
utter_out_of_scope/other:
|
||||
- text: I cant do that
|
||||
actions:
|
||||
- utter_chitchat
|
||||
- utter_faq
|
||||
- utter_greet
|
||||
- utter_out_of_scope
|
||||
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
rasa
|
||||
pandas
|
35201
tripsit/getAllDrugs.json
Normal file
35201
tripsit/getAllDrugs.json
Normal file
File diff suppressed because it is too large
Load Diff
27
tripsit/getAllDrugs.py
Normal file
27
tripsit/getAllDrugs.py
Normal file
@ -0,0 +1,27 @@
|
||||
import requests, json
|
||||
import pandas as pd
|
||||
|
||||
# API URL
|
||||
url = "http://tripbot.tripsit.me/api/tripsit/getAllDrugs"
|
||||
r = requests.get(url)
|
||||
data = r.json()
|
||||
|
||||
# Format dict and load into df
|
||||
data = json.dumps(data["data"][0], indent=2, sort_keys=False, ensure_ascii=False)
|
||||
df = pd.DataFrame.from_dict(json.loads(data), orient="index")
|
||||
|
||||
# Add id for each drug for rasa
|
||||
id = []
|
||||
for x in range(0, len(df)):
|
||||
id.append(x)
|
||||
df["id"] = id
|
||||
|
||||
# Write to JSON file
|
||||
with open("tripsit/getAllDrugs.json", "w") as fp:
|
||||
# Clean NaN values
|
||||
clean_data = {
|
||||
k1: {k: v for k, v in v1.items() if v == v and v is not None}
|
||||
for k1, v1 in df.to_dict("index").items()
|
||||
}
|
||||
# Set ensure_ascii to false to ensure we can keep greek letters (like alpha)
|
||||
fp.write(json.dumps(clean_data, indent=2, ensure_ascii=False))
|
Loading…
Reference in New Issue
Block a user