Descripción del reconocimiento de entidades con nombre personalizado

Completado

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

NER personalizado forma parte del lenguaje de Azure AI en los servicios de Azure AI.

Diferencias entre NER personalizado e integrado

El lenguaje azure AI proporciona cierto reconocimiento de entidades integrado para reconocer cosas 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 de posición Importancia Ejemplo
<YOUR-ENDPOINT> Punto de conexión de la solicitud de API https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> La versión de la API a la que estás llamando 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:

<...>
"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 buscar ubicaciones, nombres o direcciones URL en documentos de texto largo.

Sugerencia

Hay disponible una lista completa de categorías de entidades reconocidas en los documentos de NER.

NER personalizado, que es el foco del resto de este módulo, está disponible cuando las entidades que desea extraer no forman parte del servicio integrado o solo desea 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. Cada uno de estos proyectos requiere un conjunto específico de entidades y datos que necesita extraer.

Ciclo de vida del proyecto de lenguaje de Azure AI

Diagrama conceptual que muestra los pasos de un proyecto para definir entidades, etiquetar datos, entrenar modelo, ver modelo, mejorar el modelo, implementar modelo y extraer entidades.

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

  1. Definir entidades: comprender los datos y las entidades que desea identificar e intentar hacerlos tan claros como sea posible. Por ejemplo, definir exactamente qué partes de un extracto bancario desea extraer.
  2. Etiquetar datos: Etiquetar los datos existentes, especificando qué texto en su conjunto de datos corresponde a cuál entidad. Este paso es importante para realizar de forma precisa y completa, ya que cualquier etiqueta incorrecta o perdida reducirá la eficacia del modelo entrenado. Una buena variación de los posibles documentos de entrada es útil. Por ejemplo, etiquete el nombre del banco, el nombre del cliente, la dirección del cliente, los términos de préstamo o cuenta específicos, 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 que etiquete.
  4. Ver modelo: Una vez que el modelo está entrenado, observe los resultados del modelo. Esta página incluye una puntuación de 0 a 1 que se basa en la precisión y la recuperación de los datos probados. Puede ver qué entidades funcionaron bien (por ejemplo, el nombre del cliente) y qué entidades necesitan mejorar (por ejemplo, el número de cuenta).
  5. Mejorar el modelo: mejore el modelo viendo qué entidades no se pudieron identificar y qué entidades se extrajeron 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 produjo un error en las entidades y qué entidades (como el número de cuenta) deben diferenciarse de otras entidades similares (como el importe del préstamo).
  6. Implementar modelo: una vez que el modelo realice el rendimiento deseado, implemente el modelo para que esté disponible a través de la API. En el ejemplo, puede enviar a solicitudes al modelo cuando se implemente para extraer entidades de extracto bancario.
  7. Extraer entidades: use su modelo para extraer entidades. En el laboratorio se explica cómo usar la API y puede ver la referencia de API para obtener más detalles.

Consideraciones para la selección y refinación de entidades de datos

Para obtener el mejor rendimiento, deberá usar los datos de alta calidad para entrenar el modelo y los tipos de entidad claramente definidos.

Los datos de alta calidad le permitirán dedicar menos tiempo a refinar y producir mejores resultados del modelo.

  • Diversidad - usar un conjunto de datos lo más diverso posible sin perder la distribución de la vida real esperada en los datos reales. Querrás usar datos de ejemplo de tantos orígenes como sea posible, cada uno con sus propios formatos y cantidad de entidades. Es mejor que el conjunto de datos represente tantos orígenes diferentes como sea posible.
  • Distribución : use la distribución adecuada de los tipos de documento. Un conjunto de datos más diverso para entrenar el modelo ayudará al modelo a evitar el aprendizaje de relaciones incorrectas en los datos.
  • Precisión : use los datos que están lo más cerca posible de los datos del mundo real. 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 cuidadosamente y definirse lo más distintas posible. Evite entidades ambiguas (como dos nombres juntos en un extracto bancario), ya que hará que al modelo le cueste diferenciar los nombres. Si es necesario tener algunas entidades ambiguas, asegúrese de tener más ejemplos para que el modelo aprenda de para que pueda comprender la diferencia.

Mantener entidades diferentes también ayudará considerablemente a mejorar el rendimiento del modelo. Por ejemplo, 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 requeriría varios ejemplos para enseñar correctamente el 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

Para enviar una tarea de extracción, la API requiere 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 tendrá un aspecto similar al siguiente JSON:

{
    "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 azure AI Language aplica las restricciones siguientes:

  • Entrenamiento : al menos 10 archivos y no más de 100 000
  • Implementaciones : 10 nombres de implementación por proyecto
  • API
    • Creación : esta API crea un proyecto, entrena e implementa el modelo. Limitado a 10 POST y 100 GET por minuto
    • Analizar : esta API realiza el trabajo de extraer realmente las entidades; solicita una tarea y recupera los resultados. Se limita a 20 operaciones GET o POST
  • Proyectos : solo 1 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.