|
import json |
|
import os |
|
import requests |
|
|
|
from typing import Any |
|
|
|
|
|
def extract_contacts_from_text(payload: str) -> list[dict[str, Any]]: |
|
if not payload: |
|
return [] |
|
|
|
api_token: str = os.environ.get("HUGGINGFACE_INFERENCE_ENDPOINT_TOKEN", "") |
|
if not api_token: |
|
return [] |
|
|
|
api_url: str = os.environ.get("HUGGINGFACE_INFERENCE_ENDPOINT_URL", "") |
|
if not api_url: |
|
return [] |
|
|
|
response: requests.Response = requests.post( |
|
url=api_url, |
|
headers={ |
|
"Authorization": f"Bearer {api_token}", |
|
"Content-Type": "application/json"}, |
|
data=json.dumps({"inputs": payload})) |
|
|
|
outputs: list[dict[str, Any]] = response.json() |
|
if not outputs: |
|
return [] |
|
|
|
entities: list[dict[str, Any]] = [] |
|
for output in outputs: |
|
entity: dict = { |
|
"text": output.get("word", ""), |
|
"score": output.get("score", -1), |
|
"entity": output.get("entity_group", "UNKNOWN"), |
|
"start": output.get("start", -1), |
|
"end": output.get("end", -1)} |
|
|
|
entities.append(entity) |
|
|
|
return entities |
|
|