NER-Explorer / app.py
dlaima's picture
Update app.py
41c8606 verified
# Import the required libraries
import os # Provides a way of using operating system-dependent functionality
import requests # For making HTTP requests to the API
import json # For handling JSON data
from dotenv import load_dotenv, find_dotenv
import gradio as gr
# Load environment variables from .env file
load_dotenv(find_dotenv())
hf_api_key = os.getenv('HF_API_KEY') # Hugging Face API key
API_URL = os.getenv('HF_API_NER_BASE') # Endpoint for the NER model
# Define the `get_completion` function to interact with the Hugging Face API
def get_completion(inputs, parameters=None, endpoint_url=None):
headers = {
"Authorization": f"Bearer {hf_api_key}",
"Content-Type": "application/json"
}
data = {"inputs": inputs}
if parameters:
data.update({"parameters": parameters})
try:
response = requests.post(endpoint_url, headers=headers, data=json.dumps(data))
response.raise_for_status()
return response.json() # Return the API's JSON response
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
return [{"entity": "Error", "word": "Error", "score": 0}]
# Function to perform Named Entity Recognition (NER)
def ner(input):
output = get_completion(input, parameters=None, endpoint_url=API_URL)
return {"text": input, "entities": output}
# Create a Gradio interface
iface = gr.Interface(
fn=ner,
inputs=[gr.Textbox(label="Text to find entities", lines=2)],
outputs=[gr.HighlightedText(label="Text with entities")],
title="NER with dslim/bert-base-NER",
description="Find entities using the `dslim/bert-base-NER` model under the hood!",
allow_flagging="never",
examples=["My name is Michela and I live in Italy", "My name is Andrew and work at HuggingFace"]
)
# Launch the app (this will allow you to test locally before uploading to Hugging Face)
iface.launch()