Proyecto 4: Pipeline de Reconocimiento de Entidades Nombradas (NER) con Ajuste Fino Personalizado
Paso 6: Implementar el Pipeline NER como API
Construir una API utilizando FastAPI para servir el pipeline NER. FastAPI es un framework web moderno y rápido para construir APIs con Python que ofrece documentación automática de API, validación de solicitudes y excelente rendimiento.
Al envolver nuestro pipeline NER en una API, podemos hacerlo accesible a través de HTTP, permitiendo que otras aplicaciones y servicios se integren fácilmente con nuestro sistema de reconocimiento de entidades nombradas. La API aceptará texto de entrada a través de solicitudes HTTP POST y devolverá las entidades identificadas en un formato JSON estructurado.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
# Initialize FastAPI
app = FastAPI()
# Define request model
class NERRequest(BaseModel):
text: str
# Define API endpoint
@app.post("/ner")
def predict_entities(request: NERRequest):
try:
entities = ner_pipeline(request.text)
return {"text": request.text, "entities": entities}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Aquí hay un desglose detallado:
1. Importaciones y Configuración
- Importa FastAPI y HTTPException para crear el servicio web y manejar errores
- Importa BaseModel de pydantic para la validación de datos de solicitud
- Inicializa una nueva instancia de aplicación FastAPI
2. Definición del Modelo de Solicitud
- Crea una clase NERRequest que hereda de BaseModel
- Define un único campo requerido 'text' de tipo string que contendrá el texto de entrada para el reconocimiento de entidades
3. Punto Final de la API
- Crea un punto final POST en "/ner"
- Toma un objeto NERRequest como entrada
- Procesa el texto utilizando el ner_pipeline previamente definido
- Devuelve una respuesta JSON que contiene:
- El texto de entrada original
- Las entidades identificadas
- Incluye manejo de errores que devuelve un código de estado 500 si el procesamiento falla
Cuando se implementa, otras aplicaciones pueden acceder a esta API para realizar tareas NER a través de solicitudes HTTP, facilitando la integración de la funcionalidad NER en otros sistemas y servicios.
Ejecutar la API localmente:
uvicorn app:app --reload
Probar la API:
curl -X POST "http://127.0.0.1:8000/ner" \
-H "Content-Type: application/json" \
-d '{"text": "Barack Obama was born in Hawaii."}'
Analicémoslo en detalle:
Estructura del Comando:
- El comando utiliza cURL para enviar una solicitud POST a un punto final de API local (http://127.0.0.1:8000/ner)
- Incluye un encabezado Content-Type que especifica que el cuerpo de la solicitud es JSON
- El cuerpo de la solicitud contiene un objeto JSON con un campo "text" que contiene el texto de ejemplo "Barack Obama was born in Hawaii."
Respuesta Esperada:
La API devolverá una respuesta JSON que contiene:
- El texto de entrada original
- Un arreglo "entities" que enumera cada entidad identificada con:
- La palabra o frase detectada
- El tipo de entidad (por ejemplo, "PER" para persona, "LOC" para ubicación)
- Una puntuación de confianza que indica la certeza del modelo
Este punto final es parte de un servicio FastAPI que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas en el texto de entrada.
Respuesta:
{
"text": "Barack Obama was born in Hawaii.",
"entities": [
{"word": "Barack Obama", "entity_group": "PER", "score": 0.98},
{"word": "Hawaii", "entity_group": "LOC", "score": 0.95}
]
}
Este código muestra la respuesta JSON de un punto final de la API de Reconocimiento de Entidades Nombradas (NER). Analicémoslo:
Estructura:
- La respuesta contiene dos campos principales:
- "text": Muestra el texto de entrada original que fue analizado ("Barack Obama was born in Hawaii.")
- "entities": Un arreglo que contiene las entidades nombradas identificadas
Entidades Identificadas:
- Se detectaron dos entidades:
- 1. "Barack Obama" - clasificado como "PER" (Persona) con 98% de confianza
- 2. "Hawaii" - clasificado como "LOC" (Ubicación) con 95% de confianza
Este es el formato de salida que puede esperar al realizar solicitudes al punto final de la API NER, que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas.
Paso 6: Implementar el Pipeline NER como API
Construir una API utilizando FastAPI para servir el pipeline NER. FastAPI es un framework web moderno y rápido para construir APIs con Python que ofrece documentación automática de API, validación de solicitudes y excelente rendimiento.
Al envolver nuestro pipeline NER en una API, podemos hacerlo accesible a través de HTTP, permitiendo que otras aplicaciones y servicios se integren fácilmente con nuestro sistema de reconocimiento de entidades nombradas. La API aceptará texto de entrada a través de solicitudes HTTP POST y devolverá las entidades identificadas en un formato JSON estructurado.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
# Initialize FastAPI
app = FastAPI()
# Define request model
class NERRequest(BaseModel):
text: str
# Define API endpoint
@app.post("/ner")
def predict_entities(request: NERRequest):
try:
entities = ner_pipeline(request.text)
return {"text": request.text, "entities": entities}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Aquí hay un desglose detallado:
1. Importaciones y Configuración
- Importa FastAPI y HTTPException para crear el servicio web y manejar errores
- Importa BaseModel de pydantic para la validación de datos de solicitud
- Inicializa una nueva instancia de aplicación FastAPI
2. Definición del Modelo de Solicitud
- Crea una clase NERRequest que hereda de BaseModel
- Define un único campo requerido 'text' de tipo string que contendrá el texto de entrada para el reconocimiento de entidades
3. Punto Final de la API
- Crea un punto final POST en "/ner"
- Toma un objeto NERRequest como entrada
- Procesa el texto utilizando el ner_pipeline previamente definido
- Devuelve una respuesta JSON que contiene:
- El texto de entrada original
- Las entidades identificadas
- Incluye manejo de errores que devuelve un código de estado 500 si el procesamiento falla
Cuando se implementa, otras aplicaciones pueden acceder a esta API para realizar tareas NER a través de solicitudes HTTP, facilitando la integración de la funcionalidad NER en otros sistemas y servicios.
Ejecutar la API localmente:
uvicorn app:app --reload
Probar la API:
curl -X POST "http://127.0.0.1:8000/ner" \
-H "Content-Type: application/json" \
-d '{"text": "Barack Obama was born in Hawaii."}'
Analicémoslo en detalle:
Estructura del Comando:
- El comando utiliza cURL para enviar una solicitud POST a un punto final de API local (http://127.0.0.1:8000/ner)
- Incluye un encabezado Content-Type que especifica que el cuerpo de la solicitud es JSON
- El cuerpo de la solicitud contiene un objeto JSON con un campo "text" que contiene el texto de ejemplo "Barack Obama was born in Hawaii."
Respuesta Esperada:
La API devolverá una respuesta JSON que contiene:
- El texto de entrada original
- Un arreglo "entities" que enumera cada entidad identificada con:
- La palabra o frase detectada
- El tipo de entidad (por ejemplo, "PER" para persona, "LOC" para ubicación)
- Una puntuación de confianza que indica la certeza del modelo
Este punto final es parte de un servicio FastAPI que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas en el texto de entrada.
Respuesta:
{
"text": "Barack Obama was born in Hawaii.",
"entities": [
{"word": "Barack Obama", "entity_group": "PER", "score": 0.98},
{"word": "Hawaii", "entity_group": "LOC", "score": 0.95}
]
}
Este código muestra la respuesta JSON de un punto final de la API de Reconocimiento de Entidades Nombradas (NER). Analicémoslo:
Estructura:
- La respuesta contiene dos campos principales:
- "text": Muestra el texto de entrada original que fue analizado ("Barack Obama was born in Hawaii.")
- "entities": Un arreglo que contiene las entidades nombradas identificadas
Entidades Identificadas:
- Se detectaron dos entidades:
- 1. "Barack Obama" - clasificado como "PER" (Persona) con 98% de confianza
- 2. "Hawaii" - clasificado como "LOC" (Ubicación) con 95% de confianza
Este es el formato de salida que puede esperar al realizar solicitudes al punto final de la API NER, que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas.
Paso 6: Implementar el Pipeline NER como API
Construir una API utilizando FastAPI para servir el pipeline NER. FastAPI es un framework web moderno y rápido para construir APIs con Python que ofrece documentación automática de API, validación de solicitudes y excelente rendimiento.
Al envolver nuestro pipeline NER en una API, podemos hacerlo accesible a través de HTTP, permitiendo que otras aplicaciones y servicios se integren fácilmente con nuestro sistema de reconocimiento de entidades nombradas. La API aceptará texto de entrada a través de solicitudes HTTP POST y devolverá las entidades identificadas en un formato JSON estructurado.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
# Initialize FastAPI
app = FastAPI()
# Define request model
class NERRequest(BaseModel):
text: str
# Define API endpoint
@app.post("/ner")
def predict_entities(request: NERRequest):
try:
entities = ner_pipeline(request.text)
return {"text": request.text, "entities": entities}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Aquí hay un desglose detallado:
1. Importaciones y Configuración
- Importa FastAPI y HTTPException para crear el servicio web y manejar errores
- Importa BaseModel de pydantic para la validación de datos de solicitud
- Inicializa una nueva instancia de aplicación FastAPI
2. Definición del Modelo de Solicitud
- Crea una clase NERRequest que hereda de BaseModel
- Define un único campo requerido 'text' de tipo string que contendrá el texto de entrada para el reconocimiento de entidades
3. Punto Final de la API
- Crea un punto final POST en "/ner"
- Toma un objeto NERRequest como entrada
- Procesa el texto utilizando el ner_pipeline previamente definido
- Devuelve una respuesta JSON que contiene:
- El texto de entrada original
- Las entidades identificadas
- Incluye manejo de errores que devuelve un código de estado 500 si el procesamiento falla
Cuando se implementa, otras aplicaciones pueden acceder a esta API para realizar tareas NER a través de solicitudes HTTP, facilitando la integración de la funcionalidad NER en otros sistemas y servicios.
Ejecutar la API localmente:
uvicorn app:app --reload
Probar la API:
curl -X POST "http://127.0.0.1:8000/ner" \
-H "Content-Type: application/json" \
-d '{"text": "Barack Obama was born in Hawaii."}'
Analicémoslo en detalle:
Estructura del Comando:
- El comando utiliza cURL para enviar una solicitud POST a un punto final de API local (http://127.0.0.1:8000/ner)
- Incluye un encabezado Content-Type que especifica que el cuerpo de la solicitud es JSON
- El cuerpo de la solicitud contiene un objeto JSON con un campo "text" que contiene el texto de ejemplo "Barack Obama was born in Hawaii."
Respuesta Esperada:
La API devolverá una respuesta JSON que contiene:
- El texto de entrada original
- Un arreglo "entities" que enumera cada entidad identificada con:
- La palabra o frase detectada
- El tipo de entidad (por ejemplo, "PER" para persona, "LOC" para ubicación)
- Una puntuación de confianza que indica la certeza del modelo
Este punto final es parte de un servicio FastAPI que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas en el texto de entrada.
Respuesta:
{
"text": "Barack Obama was born in Hawaii.",
"entities": [
{"word": "Barack Obama", "entity_group": "PER", "score": 0.98},
{"word": "Hawaii", "entity_group": "LOC", "score": 0.95}
]
}
Este código muestra la respuesta JSON de un punto final de la API de Reconocimiento de Entidades Nombradas (NER). Analicémoslo:
Estructura:
- La respuesta contiene dos campos principales:
- "text": Muestra el texto de entrada original que fue analizado ("Barack Obama was born in Hawaii.")
- "entities": Un arreglo que contiene las entidades nombradas identificadas
Entidades Identificadas:
- Se detectaron dos entidades:
- 1. "Barack Obama" - clasificado como "PER" (Persona) con 98% de confianza
- 2. "Hawaii" - clasificado como "LOC" (Ubicación) con 95% de confianza
Este es el formato de salida que puede esperar al realizar solicitudes al punto final de la API NER, que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas.
Paso 6: Implementar el Pipeline NER como API
Construir una API utilizando FastAPI para servir el pipeline NER. FastAPI es un framework web moderno y rápido para construir APIs con Python que ofrece documentación automática de API, validación de solicitudes y excelente rendimiento.
Al envolver nuestro pipeline NER en una API, podemos hacerlo accesible a través de HTTP, permitiendo que otras aplicaciones y servicios se integren fácilmente con nuestro sistema de reconocimiento de entidades nombradas. La API aceptará texto de entrada a través de solicitudes HTTP POST y devolverá las entidades identificadas en un formato JSON estructurado.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
# Initialize FastAPI
app = FastAPI()
# Define request model
class NERRequest(BaseModel):
text: str
# Define API endpoint
@app.post("/ner")
def predict_entities(request: NERRequest):
try:
entities = ner_pipeline(request.text)
return {"text": request.text, "entities": entities}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Aquí hay un desglose detallado:
1. Importaciones y Configuración
- Importa FastAPI y HTTPException para crear el servicio web y manejar errores
- Importa BaseModel de pydantic para la validación de datos de solicitud
- Inicializa una nueva instancia de aplicación FastAPI
2. Definición del Modelo de Solicitud
- Crea una clase NERRequest que hereda de BaseModel
- Define un único campo requerido 'text' de tipo string que contendrá el texto de entrada para el reconocimiento de entidades
3. Punto Final de la API
- Crea un punto final POST en "/ner"
- Toma un objeto NERRequest como entrada
- Procesa el texto utilizando el ner_pipeline previamente definido
- Devuelve una respuesta JSON que contiene:
- El texto de entrada original
- Las entidades identificadas
- Incluye manejo de errores que devuelve un código de estado 500 si el procesamiento falla
Cuando se implementa, otras aplicaciones pueden acceder a esta API para realizar tareas NER a través de solicitudes HTTP, facilitando la integración de la funcionalidad NER en otros sistemas y servicios.
Ejecutar la API localmente:
uvicorn app:app --reload
Probar la API:
curl -X POST "http://127.0.0.1:8000/ner" \
-H "Content-Type: application/json" \
-d '{"text": "Barack Obama was born in Hawaii."}'
Analicémoslo en detalle:
Estructura del Comando:
- El comando utiliza cURL para enviar una solicitud POST a un punto final de API local (http://127.0.0.1:8000/ner)
- Incluye un encabezado Content-Type que especifica que el cuerpo de la solicitud es JSON
- El cuerpo de la solicitud contiene un objeto JSON con un campo "text" que contiene el texto de ejemplo "Barack Obama was born in Hawaii."
Respuesta Esperada:
La API devolverá una respuesta JSON que contiene:
- El texto de entrada original
- Un arreglo "entities" que enumera cada entidad identificada con:
- La palabra o frase detectada
- El tipo de entidad (por ejemplo, "PER" para persona, "LOC" para ubicación)
- Una puntuación de confianza que indica la certeza del modelo
Este punto final es parte de un servicio FastAPI que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas en el texto de entrada.
Respuesta:
{
"text": "Barack Obama was born in Hawaii.",
"entities": [
{"word": "Barack Obama", "entity_group": "PER", "score": 0.98},
{"word": "Hawaii", "entity_group": "LOC", "score": 0.95}
]
}
Este código muestra la respuesta JSON de un punto final de la API de Reconocimiento de Entidades Nombradas (NER). Analicémoslo:
Estructura:
- La respuesta contiene dos campos principales:
- "text": Muestra el texto de entrada original que fue analizado ("Barack Obama was born in Hawaii.")
- "entities": Un arreglo que contiene las entidades nombradas identificadas
Entidades Identificadas:
- Se detectaron dos entidades:
- 1. "Barack Obama" - clasificado como "PER" (Persona) con 98% de confianza
- 2. "Hawaii" - clasificado como "LOC" (Ubicación) con 95% de confianza
Este es el formato de salida que puede esperar al realizar solicitudes al punto final de la API NER, que procesa texto a través de un pipeline NER para identificar y clasificar entidades nombradas.