Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from datasets import load_dataset
|
| 3 |
+
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 4 |
+
from sklearn.metrics.pairwise import cosine_similarity
|
| 5 |
+
import numpy as np
|
| 6 |
+
|
| 7 |
+
# Load dataset and build vectorizer
|
| 8 |
+
ds = load_dataset("STEM‑AI‑mtl/electrical‑engineering", split="train")
|
| 9 |
+
docs = [q + " " + a for q, a in zip(ds["question"], ds["answer"])]
|
| 10 |
+
vectorizer = TfidfVectorizer().fit(docs)
|
| 11 |
+
tfidf_matrix = vectorizer.transform(docs)
|
| 12 |
+
|
| 13 |
+
def get_answer(user_question, top_k=1):
|
| 14 |
+
user_vec = vectorizer.transform([user_question])
|
| 15 |
+
sims = cosine_similarity(user_vec, tfidf_matrix).flatten()
|
| 16 |
+
idxs = np.argsort(-sims)[:top_k]
|
| 17 |
+
return "\n\n".join([f"**Q:** {ds['question'][i]}\n**A:** {ds['answer'][i]}" for i in idxs])
|
| 18 |
+
|
| 19 |
+
with gr.Blocks() as demo:
|
| 20 |
+
gr.Markdown("# 🛠️ Electronics Q&A Assistant")
|
| 21 |
+
question = gr.Textbox(label="Ask a question about electronics", lines=2)
|
| 22 |
+
answer = gr.Markdown()
|
| 23 |
+
ask_btn = gr.Button("Get Answer")
|
| 24 |
+
ask_btn.click(fn=get_answer, inputs=question, outputs=answer)
|
| 25 |
+
|
| 26 |
+
if __name__ == "__main__":
|
| 27 |
+
demo.launch()
|