ai-assistant / config /config.py
digitalai's picture
Update config/config.py
e0c7208 verified
raw
history blame contribute delete
No virus
6.3 kB
import re
import config.long_responses as long
from config.valid_text import is_valid_input
def message_probability(
user_message, recognised_words,
single_response=False, required_words=None
):
if required_words is None:
required_words = []
message_certainty = 0
has_required_words = True
# Counts how many words are present in each predefined message
for word in user_message:
if word in recognised_words:
message_certainty += 1
# Calculates the percent of recognised words in a user message
percentage = float(message_certainty) / float(len(recognised_words))
# Checks that the required words are in the string
for word in required_words:
if word not in user_message:
has_required_words = False
break
# Must either have the required words, or be a single response
if has_required_words or single_response:
return int(percentage * 100)
else:
return 0
def check_all_messages(message):
highest_prob_list = {}
# Simplifies response creation / adds it to the dict
def response(bot_response, list_of_words, single_response=False, required_words=[]):
nonlocal highest_prob_list
highest_prob_list[bot_response] = message_probability(message, list_of_words, single_response, required_words)
# Responses -------------------------------------------------------------------------------------------------------
response("بله", ["بله", "بلی", "بلخ", "یله", "پله", "gfi",
"آره", "آری", "آرخ", "yes", "ya",
"bale", "ari", "are", "fgi", "hvi",
"Hvd", "Hvd", "fgd", "hsj", "isj",
"nhvn", "هست", "است", "دارد",
"یس",], single_response=True)
response("خیر", [
"نه", "منفی", "odv", "kodv", "خیر", "no",
"ni", "نخیر", "نیست", "نبود", "نمیشود",
"نمی شود", "نمی\u200cشود", "نیست",
"ندیدم", "دخ", "nist", "nabod", "na",
"nah", "noch", "nuch", "nooch", "manfi",
], single_response=True)
# Longer responses
response(long.R_L01, ["اختلالات", "حرکتی", "Movement", "disorders","حرکت"],
required_words=["حرکت"])
response(long.R_L02, ["تعمیم یافته", "صورت", "گردن", "اندامهای", "رقصاک", "فوقانی", "تحتانی", "تنه"],
required_words=["رقصاک"])
response(long.R_L03, ["چشمی", "عصبی", "حرکت"
], required_words=["عصبی"])
response(long.R_L04, ["بیماری‌", "عصبی", "متا", "بولیکی", "نورومتابولیکی"
], required_words=["عصبی"])
response(long.R_L05, ["روان‌پزشکی", "روانپریشی", "روان", "پزشکی", "روانپزشکی"
], required_words=["روانپزشکی"])
response(long.R_L06, ["هیپرهموسیستئینمی", "hyperhomocysteinemia","ژنتیکی"
], required_words=["ژنتیکی"])
response(long.R_L07, ["درگیری", "طناب", "نخاعی", "spinal", "cord", "نخاعی"
], required_words=["نخاعی"])
response(long.R_L08, ["کوبالامین", "داخل", "سلولی", "intracellular", "cobalamin","سلولی"
], required_words=["سلولی"])
response(long.R_L09, ["لیپاز", "اسید", "لیزوزومال", "LAL-D", "کمبود"
], required_words=["کمبود"])
response(long.R_L10, ["هیدرولیپوآمید", "دهیدروژناز", "کمبود"
], required_words=["کمبود"])
response(long.R_L11, ["فسفاتمی","هایپوفسفاتمی", "هیپوفسفاتمی", "hypophosphatemia", "HP", "ژنتیکی"
], required_words=["ژنتیکی"])
response(long.R_L12, ["آنسفالوپاتی", "هیپرآمونمیک", "غیر", "کبدی", "جراحی", "چاقی", "Nonhepatic", "hyperammonemic", "encephalopathy", "bariatric", "surgery", "NHE-BS"
], required_words=["کبدی"])
response(long.R_L13, ["لرزش", "میتو", "کندری", "میتوکندری", "ژنتیکی"
], required_words=["ژنتیکی"])
response(long.R_L13, ["اندام", "لرزش", "ترمور", "Tremor", "TRM", "عصبی"
], required_words=["عصبی"])
#
#
# "اختلالات حرکتی": "L01",
# " رقصاک تعمیم یافته در صورت ، گردن ، اندامهای فوقانی/تحتانی ، تنه ": "L02",
# "اختلالات حرکات چشم و علائم عصبی": "L03",
# "بیماریهای عصبی": "L04",
# "هوموستئینمی شدید": "L06",
# "تظاهرات روانی": "L05",
# "درگیری نخاع": "L07",
# "متابولیسم کبدی داخل سلولی": "L08",
# "کمبود لیپاز اسید لیزوزومی": "L09",
# "کمبود دی هیدرو لیپوامید دی هیدروژناز": "L10",
#
#
# "فسفاتمی": "L11",
# "عوارض" ,"آنسفالوپاتی", "غیرکبدی" , "جراحی", "باریاتریک": "L12",
# "لرزش اندام فوقانی": "L13",
# "بیماریهای میتوکندری": "L14",
#
#
#
# "کمبود", "هیدرولیپوآمید", "دهیدروژناز"
# "هایپوفسفاتمی", "هیپوفسفاتمی", "hypophosphatemia", "HP"
# "آنسفالوپاتی", "هیپرآمونمیک", "غیر", "کبدی", "جراحی", "چاقی", "Nonhepatic", "hyperammonemic", "encephalopathy", "bariatric", "surgery", "NHE-BS
# "لرزش", "ترمور", "Tremor", "لرزش", "TRM"
best_match = max(highest_prob_list, key=highest_prob_list.get)
# print(highest_prob_list)
# print(f'Best match = {best_match} | Score: {highest_prob_list[best_match]}')
return long.unknown() if highest_prob_list[best_match] < 1 else best_match
# Used to get the response
def get_response(user_input):
split_message = re.split(r'\s+|[,;?!.-]\s*', user_input.lower())
response = check_all_messages(split_message)
return response
#
# # Testing the response system
# while True:
# print('Bot: ' + get_response(input('You: ')))