NER_Address / app.py
D3V1L1810's picture
Update app.py
66ab975 verified
import requests
import sys
import spacy
from io import BytesIO
import pandas as pd
import json
# Load your custom NER model
nlp_ner = spacy.load("ner_model_v1")
# def send_results_to_api(data, result_url):
# headers = {"Content-Type": "application/json"}
# response = requests.post(result_url, json=data, headers=headers)
# if response.status_code == 200:
# return response.json() # Return any response from the API if needed
# else:
# return {"error": f"Failed to send results to API: {response.status_code}"}
def process_xlsx(params):
# xlsx_file = 'https://fragilestatesindex.org/wp-content/uploads/2023/06/FSI-2023-DOWNLOAD.xlsx'
try:
params = json.loads(params)
except json.JSONDecodeError as e:
return {"error": f"Invalid JSON input: {e.msg} at line {e.lineno} column {e.colno}"}
print(f"JSON : \n{params}")
addresses = params.get("urls", [])
if not params.get("normalfileID",[]):
file_ids = [None]*len(addresses)
else:
file_ids = params.get("normalfileID",[])
# api = params.get("api", "")
# job_id = params.get("job_id", "")
solutions=[]
text_id = 1
for adress,file_id in zip(addresses, file_ids):
doc = nlp_ner(adress)
# Initialize the dictionary to store the results
entities_dict = {}
# Extract entities and their indices
for idx, ent in enumerate(doc.ents):
if ent.label_ not in entities_dict:
entities_dict[ent.label_] = []
entities_dict[ent.label_].append({'word': ent.text, 'index': idx})
# Create the final output dictionary
#
obj = {"text": adress, "answer":entities_dict, "qcUser": None, "normalfileID": file_id}
solutions.append(obj)
print(f"{text_id}/{len(addresses)}\n")
text_id = text_id+1
# result_url = f"{api}/{job_id}"
# send_results_to_api(solutions, result_url)
return json.dumps({"solutions": solutions})
import gradio as gr
inputt = gr.Textbox(label="Parameters (JSON format) Eg. {'texts':['file1.mp3','file2.wav']}")
outputs = gr.JSON()
application = gr.Interface(fn=process_xlsx, inputs=inputt, outputs=outputs, title="Named Entity Recognition with API Integration")
application.launch()