File size: 1,065 Bytes
109f70a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

from retriever.bm25_retriever import BM25Retriever
from qa.biobert_qa import BioBERTAnswerExtractor

def main():
    # Initialize retriever and QA model
    retriever = BM25Retriever("data/medquad_cleaned.json")
    qa = BioBERTAnswerExtractor()

    print("\n🩺 MedBot is ready! Type your question or 'exit' to quit.")

    while True:
        question = input("\nAsk a medical question: ").strip()
        if question.lower() in {"exit", "quit"}:
            print("👋 Goodbye!")
            break

        # Step 1: Retrieve top 3 passages
        results = retriever.retrieve(question, top_k=3)

        # Step 2: Run BioBERT on each passage
        print("\n🔍 Best answers:")
        for idx, item in enumerate(results, 1):
            context = item["context"]
            answer = qa.extract_answer(question, context)
            print(f"\nResult {idx}")
            print(f"Q: {item['title']}")
            print(f"A: {answer}")
            print(f"Source: {item['source']} (BM25 Score: {item['score']:.2f})")

if __name__ == "__main__":
    main()