nlp_to_dates / app.py
willdzierson's picture
Update app.py
9acda30
Raw
History Blame Contribute Delete
1.29 kB
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()