Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from sentence_transformers import SentenceTransformer, util | |
| import re | |
| # Load the SentenceTransformer model | |
| model = SentenceTransformer('all-MiniLM-L6-v2') | |
| def extract_lists(text): | |
| # Split the input text by newlines and process each line | |
| lines = text.split('\n') | |
| lists = [] | |
| for line in lines: | |
| # Strip whitespace and check if the line is not empty | |
| line = line.strip() | |
| if line: | |
| # Split the line by spaces and strip any remaining whitespace | |
| keywords = [item.strip() for item in line.split() if item.strip()] | |
| if keywords: | |
| lists.append(keywords) | |
| return lists | |
| def compare_embeddings(query, lists_text): | |
| # Extract lists from the input text | |
| keyword_lists = extract_lists(lists_text) | |
| if not keyword_lists: | |
| return "No valid lists found in the input. Please check the format." | |
| # Encode the query | |
| query_embedding = model.encode(query, convert_to_tensor=True) | |
| results = [] | |
| for i, keywords in enumerate(keyword_lists): | |
| # Encode the keywords | |
| keyword_embeddings = model.encode(keywords, convert_to_tensor=True) | |
| # Calculate cosine similarity | |
| similarities = util.pytorch_cos_sim(query_embedding, keyword_embeddings)[0] | |
| # Calculate average similarity for the list | |
| avg_similarity = similarities.mean().item() | |
| results.append((i, avg_similarity, keywords)) | |
| # Sort results by similarity score (descending) | |
| results.sort(key=lambda x: x[1], reverse=True) | |
| # Format the output | |
| output = "" | |
| for i, score, keywords in results: | |
| output += f"List {i}: Similarity score {score:.4f}\n" | |
| output += f" Keywords: {' '.join(keywords)}\n\n" | |
| return output | |
| # Create the Gradio interface | |
| iface = gr.Interface( | |
| fn=compare_embeddings, | |
| inputs=[ | |
| gr.Textbox(label="Query"), | |
| gr.Textbox( | |
| label="Lists of keywords", | |
| placeholder="Enter each list of keywords on a new line, with keywords separated by spaces.", | |
| lines=5 | |
| ), | |
| ], | |
| outputs=gr.Textbox(label="Results"), | |
| title="Keyword Lists Comparison App", | |
| description="Compare a query with multiple lists of keywords and find the most relevant lists. Enter each list on a new line, with keywords separated by spaces." | |
| ) | |
| # Launch the app | |
| iface.launch() |