Descripción del reconocimiento de entidades con nombre personalizadas

Completado

NER personalizado es un servicio de API de Azure que examina documentos, identifica entidades definidas por el usuario y las extrae. Estas entidades pueden ser cualquier cosa, desde nombres y direcciones a extractos bancarios o minería de conocimientos para mejorar los resultados de la búsqueda.

NER personalizado forma parte de Lenguaje de Azure AI en servicios de Azure AI.

Diferencias entre NER personalizado e integrado

Lenguaje de Azure AI proporciona cierto reconocimiento de entidades integrado, para reconocer elementos como una persona, una ubicación, una organización o una dirección URL. El NER integrado permite configurar el servicio con una configuración mínima y extraer entidades. Para llamar a un NER integrado, cree el servicio y llame al punto de conexión para ese servicio NER de la siguiente manera:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Marcador Valor Ejemplo
<YOUR-ENDPOINT> El punto de conexión para su solicitud de API https://<your-resource>.cognitiveservices.azure.com
<AIP-VERSION> Versión de la API a la que llama 2023-05-01

El cuerpo de esa llamada contendrá los documentos de los que se extraen las entidades y los encabezados contienen la clave de servicio.

La respuesta de la llamada anterior contiene una matriz de entidades reconocidas, como las siguientes:

<...>
"entities":[
    {
        "text":"Seattle",
        "category":"Location",
        "subcategory":"GPE",
        "offset":45,
        "length":7,
        "confidenceScore":0.99
    },
    {
        "text":"next week",
        "category":"DateTime",
        "subcategory":"DateRange",
        "offset":104,
        "length":9,
        "confidenceScore":0.8
    }
]
<...>

Algunos ejemplos de cuándo usar el NER integrado incluyen la búsqueda de ubicaciones, nombres o direcciones URL en documentos de texto largos.

Sugerencia

En la documentación de NER hay disponible una lista completa de categorías de entidades reconocidas.

NER personalizado, que es el foco del resto de este módulo, está disponible cuando las entidades que se quieren extraer no forman parte del servicio integrado, o bien solo se quieren extraer entidades específicas. Puede hacer que el modelo NER personalizado sea tan sencillo o complejo como sea necesario para la aplicación.

Algunos ejemplos de cuándo le interesa el NER personalizado incluyen datos legales o bancarios específicos, minería de conocimientos para mejorar la búsqueda de catálogos o buscar texto específico para directivas de auditoría. En cada uno de estos proyectos se necesita un conjunto específico de entidades y datos para extraer.

Ciclo de vida del proyecto de Lenguaje de Azure AI

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

La creación de un modelo de extracción de entidades suele seguir una ruta similar a la mayoría de las características del servicio de Lenguaje de Azure AI:

  1. Definición de entidades: comprender los datos y las entidades que se quieren identificar e intentar que sean lo más claros posible. Por ejemplo, definir exactamente qué partes de un extracto bancario quiere extraer.
  2. Etiquetado de datos: etiquete los datos existentes y especifique qué texto del conjunto de datos se corresponde a cada entidad. Es importante realizar este paso con precisión y de forma completa, ya que cualquier etiqueta incorrecta o ausente reducirá la eficacia del modelo entrenado. Una buena variación de los posibles documentos de entrada es útil. Por ejemplo, etiquetar el nombre del banco, el nombre del cliente, la dirección del cliente, los términos específicos del préstamo o la cuenta, el importe del préstamo o la cuenta, y el número de cuenta.
  3. Entrenamiento del modelo: entrene el modelo una vez que haya etiquetado las entidades. El entrenamiento enseña al modelo a reconocer las entidades etiquetadas.
  4. Visualización del modelo: después de entrenar el modelo, vea sus resultados. Esta página incluye una puntuación de 0 a 1 que se basa en la precisión y la coincidencia de los datos probados. Puede ver qué entidades han funcionado bien (por ejemplo, el nombre del cliente) y cuáles hay que mejorar (como el número de cuenta).
  5. Mejora del modelo: para mejorar el modelo, compruebe qué entidades no se han podido identificar y cuáles se han extraído incorrectamente. Averigüe qué datos se deben agregar al entrenamiento del modelo para mejorar el rendimiento. En esta página se muestra cómo se han producido los errores en las entidades y cuáles (como el número de cuenta) se deben diferenciar de otras entidades similares (como el importe del préstamo).
  6. Implementación del modelo: una vez que el modelo funciona de la forma deseada, impleméntelo para que esté disponible por medio de la API. En el ejemplo, puede enviar a solicitudes al modelo cuando se implemente para extraer entidades de extracto bancario.
  7. Extracción de entidades: use el modelo para extraer entidades. En el laboratorio se explica cómo usar la API y puede ver la referencia de API para más información.

Consideraciones para la selección de datos y el perfeccionamiento de las entidades

A fin de obtener el mejor rendimiento, tendrá que usar datos de alta calidad para entrenar el modelo y definir claramente los tipos de entidad.

Los datos de alta calidad le permitirán dedicar menos tiempo al perfeccionamiento y generarán mejores resultados del modelo.

  • Diversidad: use el conjunto de datos más diverso posible sin perder la distribución real esperada en los datos reales. Querrá usar datos de ejemplo de tantos orígenes como sea posible, cada uno con sus propios formatos y número de entidades. Es mejor que el conjunto de datos represente la mayor cantidad posible de orígenes diferentes.
  • Distribución: use la distribución adecuada de los tipos de documento. Un conjunto de datos más diverso para entrenar el modelo evitará que aprenda relaciones incorrectas en los datos.
  • Precisión: use datos los más parecidos posibles a datos reales. Los datos falsos funcionan para iniciar el proceso de entrenamiento, pero es probable que se diferencien de los datos reales de maneras que puedan hacer que el modelo no realice correctamente la extracción.

Las entidades también deben considerarse con atención y definirse de la forma más clara posible. Evite entidades ambiguas (por ejemplo, dos nombres juntos en un extracto bancario), ya que harán que el modelo tenga dificultades para diferenciarlas. Si es necesario disponer de algunas entidades ambiguas, asegúrese de tener más ejemplos para que el modelo aprenda y pueda comprender la diferencia.

Mantener entidades diferentes también ayudará considerablemente a mejorar el rendimiento del modelo. Por ejemplo, para intentar extraer algo como "Información de contacto", que podría ser un número de teléfono, un identificador de redes sociales o una dirección de correo electrónico, se necesitarían varios ejemplos a fin de enseñar correctamente al modelo. En su lugar, intente dividirlos en entidades más específicas, como "Teléfono", "Correo electrónico" y "Redes sociales", y deje que el modelo etiquete el tipo de información de contacto que encuentre.

Procedimiento de extracción de entidades

A fin de enviar una tarea de clasificación, la API necesita el cuerpo JSON para especificar qué tarea se va a ejecutar. En el caso de NER personalizado, la tarea de la carga de JSON es CustomEntityRecognition.

La carga será similar al código JSON siguiente:

{
    "displayName": "string",
    "analysisInput": {
        "documents": [
            {
                "id": "doc1", 
                "text": "string"
            },
            {
                "id": "doc2",
                "text": "string"
            }
        ]
    },
    "tasks": [
        {
            "kind": "CustomEntityRecognition",
            "taskName": "MyRecognitionTaskName",
            "parameters": {
            "projectName": "MyProject",
            "deploymentName": "MyDeployment"
            }
        }
    ]
}

Límites del proyecto

El servicio de Lenguaje de Azure AI aplica las restricciones siguientes:

  • Entrenamiento: un mínimo de 10 archivos y un máximo de 100 000
  • Implementaciones: 10 nombres de implementación por proyecto
  • API
    • Authoring: esta API crea un proyecto, entrena el modelo y lo implementa. Se limita a 10 operaciones POST y 100 operaciones GET por minuto
    • Analyze: esta API realiza el trabajo real de extracción de las entidades; solicita una tarea y recupera los resultados. Se limita a 20 operaciones GET o POST
  • Proyectos: solo una cuenta de almacenamiento por proyecto, 500 proyectos por recurso y 50 modelos entrenados por proyecto
  • Entidades: cada entidad puede tener hasta 500 caracteres. Puede tener hasta 200 tipos de entidad.

Consulte la página Límites de servicio para Lenguaje de Azure AI para obtener información detallada.