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

Popular posts from this blog

styles.css