File size: 1,275 Bytes
f2204ac
 
 
8d46462
f2204ac
 
 
 
8d46462
f2204ac
8d46462
f2204ac
8d46462
f2204ac
8d46462
 
 
f2204ac
 
 
 
8d46462
 
f2204ac
8d46462
f2204ac
 
 
 
 
 
 
 
 
 
 
 
a08903f
f2204ac
8d46462
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
34
35
36
37
38
39
40
41
import pandas as pd
import numpy as np
from sentence_transformers import SentenceTransformer
from sklearn.neighbors import NearestNeighbors
import gradio as gr

# Load data
data = pd.read_csv("Mental_Health_FAQ.csv")
data.rename(columns={'Questions': 'question', 'Answers': 'answer'}, inplace=True)

# Load model and encode questions
model = SentenceTransformer('all-MiniLM-L6-v2')
faq_embeddings = model.encode(data['question'].tolist())

# Use Nearest Neighbors instead of FAISS
nn = NearestNeighbors(n_neighbors=3, metric='cosine')
nn.fit(faq_embeddings)

# Define query function
def gradio_faq(query):
    query_embedding = model.encode([query])
    distances, indices = nn.kneighbors(query_embedding)

    results = ""
    for rank, idx in enumerate(indices[0]):
        question = data.iloc[idx]['question']
        answer = data.iloc[idx]['answer']
        results += f"🔹 **Q{rank+1}:** {question}\n**A:** {answer}\n\n"
    return results.strip()

# Launch Gradio interface
gr.Interface(
    fn=gradio_faq,
    inputs=gr.Textbox(label="Ask a Mental Health Question"),
    outputs=gr.Markdown(label="Top Answers"),
    title="🧠 Mental Health FAQ Assistant",
    description="Type your question to get the most relevant answers from the FAQ dataset."

).launch()