import spacy import dateparser import gradio as gr from datetime import datetime, timedelta nlp = spacy.load('en_core_web_sm') def handle(text): # Use SpaCy to identify date entities doc = nlp(text) dates = [ent.text for ent in doc.ents if ent.label_ == 'DATE'] # Use dateparser to parse the date entities date_objs = [dateparser.parse(date) for date in dates] # Exclude None values date_objs = [date for date in date_objs if date is not None] if "last day" in text.lower(): date_objs = [datetime.now() - timedelta(days=1), datetime.now()] if "last few days" in text.lower(): date_objs = [datetime.now() - timedelta(days=3), datetime.now()] if "last couple of days" in text.lower(): date_objs = [datetime.now() - timedelta(days=2), datetime.now()] elif "last week" in text.lower(): date_objs = [datetime.now() - timedelta(weeks=1), datetime.now()] # Convert dates to strings in the format "YYYY-MM-DD" date_strs = [date.strftime("%Y-%m-%d") for date in date_objs] # Prepare the response response = { "dates": date_strs, # Add any other response fields as needed } return response iface = gr.Interface(fn=handle, inputs="text", outputs="json") iface.launch()