Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -1,11 +1,15 @@
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
import re
|
4 |
-
from transformers import pipeline
|
5 |
|
6 |
-
# Load
|
7 |
-
model_name = "
|
8 |
-
|
|
|
|
|
|
|
|
|
9 |
|
10 |
# Regex for extracting price
|
11 |
price_pattern = re.compile(r'(\bunder\b|\babove\b|\bbelow\b|\bbetween\b)?\s?(\d{1,5})\s?(AED|USD|EUR)?', re.IGNORECASE)
|
@@ -15,7 +19,7 @@ gender_keywords = ["men", "male", "women", "female", "unisex"]
|
|
15 |
|
16 |
def extract_attributes(query):
|
17 |
"""
|
18 |
-
Extract structured fashion attributes dynamically using the fine-tuned NER model.
|
19 |
"""
|
20 |
structured_output = {"Brand": "Unknown", "Category": "Unknown", "Gender": "Unknown", "Price": "Unknown"}
|
21 |
|
@@ -26,12 +30,12 @@ def extract_attributes(query):
|
|
26 |
entity_text = entity["word"].replace("##", "") # Fix tokenization artifacts
|
27 |
entity_label = entity["entity"]
|
28 |
|
29 |
-
if "
|
30 |
structured_output["Brand"] = entity_text
|
31 |
-
elif "
|
32 |
structured_output["Category"] = entity_text
|
33 |
-
elif "
|
34 |
-
structured_output["
|
35 |
|
36 |
# Extract gender
|
37 |
for gender in gender_keywords:
|
@@ -39,9 +43,9 @@ def extract_attributes(query):
|
|
39 |
structured_output["Gender"] = gender.capitalize()
|
40 |
break
|
41 |
|
42 |
-
# Extract price
|
43 |
price_match = price_pattern.search(query)
|
44 |
-
if price_match:
|
45 |
condition, amount, currency = price_match.groups()
|
46 |
structured_output["Price"] = f"{condition.capitalize() if condition else ''} {amount} {currency if currency else 'AED'}".strip()
|
47 |
|
@@ -57,7 +61,7 @@ def parse_query(user_query):
|
|
57 |
|
58 |
# Create Gradio Interface
|
59 |
with gr.Blocks() as demo:
|
60 |
-
gr.Markdown("# 🛍️ Luxury Fashion Query Parser using
|
61 |
|
62 |
query_input = gr.Textbox(label="Enter your search query", placeholder="e.g., Gucci men’s perfume under 200AED")
|
63 |
output_box = gr.JSON(label="Parsed Output")
|
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
import re
|
4 |
+
from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline
|
5 |
|
6 |
+
# Load NER-Luxury model from Hugging Face
|
7 |
+
model_name = "AkimfromParis/NER-Luxury"
|
8 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
9 |
+
model = AutoModelForTokenClassification.from_pretrained(model_name)
|
10 |
+
|
11 |
+
# Load pipeline for Named Entity Recognition (NER)
|
12 |
+
ner_pipeline = pipeline("ner", model=model, tokenizer=tokenizer)
|
13 |
|
14 |
# Regex for extracting price
|
15 |
price_pattern = re.compile(r'(\bunder\b|\babove\b|\bbelow\b|\bbetween\b)?\s?(\d{1,5})\s?(AED|USD|EUR)?', re.IGNORECASE)
|
|
|
19 |
|
20 |
def extract_attributes(query):
|
21 |
"""
|
22 |
+
Extract structured fashion attributes dynamically using the fine-tuned NER-Luxury model.
|
23 |
"""
|
24 |
structured_output = {"Brand": "Unknown", "Category": "Unknown", "Gender": "Unknown", "Price": "Unknown"}
|
25 |
|
|
|
30 |
entity_text = entity["word"].replace("##", "") # Fix tokenization artifacts
|
31 |
entity_label = entity["entity"]
|
32 |
|
33 |
+
if "HOUSE" in entity_label or "BRAND" in entity_label: # Luxury brands
|
34 |
structured_output["Brand"] = entity_text
|
35 |
+
elif "CATEGORY" in entity_label: # Fashion categories
|
36 |
structured_output["Category"] = entity_text
|
37 |
+
elif "MONETARYVALUE" in entity_label: # Price values
|
38 |
+
structured_output["Price"] = entity_text
|
39 |
|
40 |
# Extract gender
|
41 |
for gender in gender_keywords:
|
|
|
43 |
structured_output["Gender"] = gender.capitalize()
|
44 |
break
|
45 |
|
46 |
+
# Extract price if not found by NER
|
47 |
price_match = price_pattern.search(query)
|
48 |
+
if price_match and structured_output["Price"] == "Unknown":
|
49 |
condition, amount, currency = price_match.groups()
|
50 |
structured_output["Price"] = f"{condition.capitalize() if condition else ''} {amount} {currency if currency else 'AED'}".strip()
|
51 |
|
|
|
61 |
|
62 |
# Create Gradio Interface
|
63 |
with gr.Blocks() as demo:
|
64 |
+
gr.Markdown("# 🛍️ Luxury Fashion Query Parser using NER-Luxury")
|
65 |
|
66 |
query_input = gr.Textbox(label="Enter your search query", placeholder="e.g., Gucci men’s perfume under 200AED")
|
67 |
output_box = gr.JSON(label="Parsed Output")
|