Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| # Load dataset | |
| df = pd.read_csv("samsung_led_tv_faq_500.csv") | |
| df.head() | |
| from sentence_transformers import SentenceTransformer | |
| # Load pretrained model | |
| model = SentenceTransformer('all-MiniLM-L6-v2') | |
| # Generate embeddings | |
| question_embeddings = model.encode(df['Question'].tolist(), show_progress_bar=True) | |
| question_embeddings | |
| import faiss | |
| import numpy as np | |
| # Drop exact duplicate questions | |
| # Clean duplicates | |
| df = df.drop_duplicates(subset='Question').reset_index(drop=True) | |
| print(f"Total unique questions: {len(df)}") | |
| # Regenerate embeddings for cleaned DataFrame | |
| from sentence_transformers import SentenceTransformer | |
| model = SentenceTransformer('all-MiniLM-L6-v2') | |
| question_embeddings = model.encode(df['Question'].tolist(), show_progress_bar=True) | |
| question_embeddings = np.array(question_embeddings).astype("float32") | |
| # Build FAISS index | |
| import faiss | |
| index = faiss.IndexFlatL2(question_embeddings.shape[1]) | |
| index.add(question_embeddings) | |
| def search_faq(query, k=3): | |
| query_embedding = model.encode([query]).astype("float32") | |
| D, I = index.search(query_embedding, k) | |
| results = [] | |
| for dist, i in zip(D[0], I[0]): | |
| if i < len(df): | |
| results.append((df.iloc[i]['Question'], df.iloc[i]['Answer'], dist)) | |
| return results | |
| query = "Can I mount the TV on a wall? (model UA48TU7069)" | |
| results = search_faq(query) | |
| print(f"Query: {query}\n") | |
| for q, a, d in results: | |
| print(f"Matched Q: {q}\nAnswer: {a}\nDistance: {d:.4f}\n") | |
| import gradio as gr | |
| from gtts import gTTS | |
| import os | |
| def gradio_interface(query): | |
| results = search_faq(query, k=1) | |
| if results: | |
| top_q, top_a, dist = results[0] | |
| answer = top_a | |
| else: | |
| answer = "Sorry, I couldn't find a match." | |
| # Generate audio with gTTS | |
| tts = gTTS(text=answer, lang='en') | |
| tts.save("answer.mp3") | |
| return "answer.mp3" | |
| demo = gr.Interface( | |
| fn=gradio_interface, | |
| inputs=gr.Textbox(lines=2, placeholder="Ask a question about your Samsung LED TV..."), | |
| outputs=gr.Audio(label=""), | |
| title="Samsung LED TV FAQ Assistant", | |
| description="Ask queries about your Samsung LED TV. The assistant will speak the answer.", | |
| theme="soft" | |
| ) | |
| demo.launch(share=True) | |