Main.py(poulami,Shreya)
import json
from difflib import get_close_matches
from typing import Optional, List, Dict
# File path as a constant
KNOWLEDGE_BASE_FILE = 'knowledgeBase.json'
def load_knowledge_base(file_path: str) -> Dict:
with open(file_path, 'r') as file:
data = json.load(file)
return data
def save_knowledge_base(file_path: str, data: Dict) -> None:
with open(file_path, 'w') as file:
json.dump(data, file, indent=2)
def find_best_match(user_question: str, questions: List[str]) -> Optional[str]:
matches = get_close_matches(user_question, questions, n=1, cutoff=0.9)
return matches[0] if matches else None
def get_answer_for_question(question: str, knowledge_base: Dict) -> Optional[str]:
return knowledge_base["questions"].get(question)
def chat_bot() -> None:
knowledge_base = load_knowledge_base(KNOWLEDGE_BASE_FILE)
knowledge_base["questions"] = {q["question"]: q["answer"] for q in knowledge_base["questions"]}
while True:
user_input = input('You: ')
if user_input.lower() == 'quit':
break
best_match = find_best_match(user_input, list(knowledge_base["questions"].keys()))
if best_match:
answer = get_answer_for_question(best_match, knowledge_base)
print(f'Bot: {answer}')
else:
print('Bot: Sorry, I don\'t know the answer. Can you teach me?')
new_answer = input('Type the answer or "skip" to skip: ')
if new_answer.lower() != 'skip':
knowledge_base["questions"][user_input] = new_answer
save_knowledge_base(KNOWLEDGE_BASE_FILE, {"questions": [{"question": k, "answer": v} for k, v in knowledge_base["questions"].items()]})
print('Bot: Thank you! I learned a new response!')
if __name__ == '__main__':
chat_bot()
Comments
Post a Comment