El enriquecimiento de Inteligencia Artificial es una capacidad de indexación de Azure Cognitive Search que habilita la extracción de información en imágenes, archivos y otras fuentes de datos no estructurados.
Las tareas de extracción y enriquecimiento se implementan a través de habilidades cognitivas, tales como el procesamiento del lenguaje natural y el procesamiento de imágenes con varias posibilidades: reconocimiento de entidades, detección de lenguaje, detección de sentimientos, OCR, detección de rostros, etc.
En esta sesión se describirá el servicio Azure Cognitive Search y se construirá un pipeline de enriquecimiento capaz de extraer información de documentos PDF con el cual se generará un sitio web o una app móvil para realizar búsquedas de información.
3. Luis Beltrán
◦ Investigador en Tomas Bata University in Zlín, República
Checa.
◦ Docente en Tecnológico Nacional de México en Celaya,
Mexico.
◦ Alto interés en Xamarin, Azure e Inteligencia Artificial@darkicebeam
luis@luisbeltran.mx
4. Agenda
◦ ¿Qué es Azure Search?
◦ Enriquecimiento de IA
◦ Descripción
◦ Pasos
◦ Demo
◦ Call to Action
Descarga la presentación: https://bit.ly/LuisMVPWeek
6. Azure Cognitive Search
Search-as-a-Service
◦ Gestión sencilla
◦ Búsquedas por keywords
◦ Analizadores de lenguaje
◦ Soporte a requerimientos geoespaciales
◦ Sugerencias / Autocompletado
◦ Scoring personalizado
◦ Búsqueda de proximidad
◦ Sinónimos,
◦ etc.
7. Capacidades de los Cognitive Services
Integra la Inteligencia Artificial en tus aplicaciones, sitios web y bots
Detección de objetos,
escenas y actividades.
Reconocimiento e
identificación facial
Reconocimiento de
celebridades y lugares
emblemáticos
Reconocimiento de la
emoción
Reconocimiento de texto y
escritura a mano (OCR)
Extracción y análisis de
metadatos de video, audio
y fotogramas clave
Moderación de contenido
explícito u ofensivo
Reconocimiento de imagen
personalizado
Visión
Detección de idioma
Análisis de sentimiento de
texto
Extracción de frases clave
Reconocimiento de la
entidad
Corrección ortográfica
Moderación de contenido
de texto explícito u
ofensivo, detección de PII
(Personally Identifiable
Information)
Traducción de textos
Traducción de texto
personalizable
Comprensión del lenguaje
contextual
Lenguaje
Resultados de búsqueda
web, noticias, imágenes y
videos sin publicidad
Tendencias para video,
noticias
Identificación de imágenes,
clasificación y extracción de
conocimiento.
Identificación de imágenes y
productos similares.
Reconocimiento y
clasificación de entidades
nombradas
Adquisición de conocimiento
para entidades nombradas
Creación de motores de
búsqueda personalizados sin
publicidad
Sugerencias automáticas
Conocimiento
Transcripción de voz (voz a
texto)
Síntesis de voz (texto a voz)
Traducción de voz en
tiempo real
Identificación y verificación
del orador
Modelos de voz
personalizados para
transcripción y traducción
Voz personalizada
Voz
Extracción de Q&A a partir
de texto no estructurado
Creación de base de
conocimiento (KB) a partir
de colecciones de
preguntas y respuestas
Emparejamiento semántico
para bases de
conocimiento
Aprendizaje de
personalización de
contenido personalizable
Búsqueda
8. Enriquecimiento de IA
◦ El enriquecimiento de IA es una capacidad de indexación de Azure Cognitive Search
utilizada para extraer texto de imágenes, blobs y otras fuentes de datos no
estructurados.
◦ El enriquecimiento y la extracción hacen que el contenido sea más “buscable”
mediante un índice o una tienda de conocimiento.
◦ La extracción y el enriquecimiento se implementan por medio de habilidades
cognitivas asociadas a un pipeline de indexación.
9. Desde un punto de vista general…
INGIERE
Datos en cualquier
formato y cualquier
almacenamiento de
Azure
ENRIQUECE EXPLORA
Anotaciones
Habilidades
cognitivas
Búsqueda
10. Las habilidades cognitivas integradas en Search se dividen en dos categorías:
◦ Las habilidades de procesamiento del lenguaje natural, que incluyen detección de
lenguaje, extracción de frases clave, manipulación de texto, detección de
sentimientos, reconocimiento de entidades. El texto no estructurado es mapeado a
campos filtrables y de búsqueda en un índice.
◦ Las habilidades de procesamiento de imágenes, que incluyen OCR e identificación de
características visuales: detección facial, interpretación de imágenes, reconocimiento
de imágenes (personas famosas y puntos de referencia) o atributos como la
orientación de la imagen. Estas habilidades crean representaciones de texto del
contenido de la imagen, lo que permite realizar búsquedas con las capacidades de
consulta de Azure Cognitive Search.
11. Arquitectura de Cognitive Search
Skillset:
Un pipeline extensible
de enriquecimiento
Indexación
para
búsqueda
Document
Cracking
Documentos
Anotados
Datos del
Cliente
IEnricherIEnricherHabilidad
Cognitiva
Índice de
Búsqueda
INGIERE ENRIQUECE EXPLORA
12. Las habilidades cognitivas en Search se basan en modelos de aprendizaje automático
previamente capacitados en API de servicios cognitivos: Computer Vision y Text
Analytics.
El procesamiento de imágenes y lenguaje natural se aplica durante la fase de ingestión
de datos, y los resultados se convierten en parte de la composición de un documento
en un índice de búsqueda en Azure Cognitive Search.
Los datos se obtienen de un Azure dataset y luego se envían a través de un pipeline de
indexación utilizando las habilidades integradas que necesite.
La arquitectura es extensible, por lo que si las habilidades integradas no son suficientes,
puede crear y adjuntar habilidades personalizadas para integrar el procesamiento
personalizado. Por ejemplo, un módulo de entidad personalizado o un clasificador de
documentos dirigido a dominios específicos, tales como publicaciones científicas,
finanzas o medicina.
13. Requerimientos de las habilidades
personalizadas
https
Habilidad de
traducción
personalizada
{
"values": [
{
"recordId": "7cad2",
"data": {
"value1": "I owe you 5 grand"
}
},
{
"recordId": "7cad3",
"data": {
"value1": "Just my 2 cents",
}
},
…
]
}
{
"values": [
{
"recordId": "7cad2",
"data": {
"myOuput1": "Te debo cinco mil"
}
},
{
"recordId": "7cad3",
"data": {
"myOutput1": "Solo mis 2 centavos"
}
},
…
]
}
14. Pasos a seguir para construir un pipeline
de enriquecimiento
Un pipeline de enriquecimiento está basado en indexadores.
Los indexadores cargan un índice basado en asignaciones campo-a-campo entre el
índice y su fuente de datos para descifrar documentos (document cracking).
Las habilidades, ahora adjuntadas a los indexadores, interceptan y enriquecen los
documentos de acuerdo con los conjuntos de habilidades (skillsets) definidos.
Una vez indexado, puedes acceder al contenido a través de búsquedas usando
cualquier tipo de consultas admitido por Azure Cognitive Search.
15. Paso 1: Fase de conexión y “document cracking”
◦ Al comienzo del pipeline, tienes contenido no estructurado de texto o sin texto
(imágenes, documentos escaneados…). Los datos deben existir en un servicio de
almacenamiento de datos de Azure al que pueda acceder el indexador. Los
indexadores pueden "descifrar" los documentos fuente para extraer su texto o crear
contenido de texto de fuentes que no son de texto durante la indexación.
◦ La indexación toma tiempo. Comienza con un conjunto de datos pequeño y
representativo. Luego puedes aumentar gradualmente conforme la solución madura.
16. Document cracking (descifrando
documentos)
Diferentes tipos de data sources
◦ Blob Storage
◦ Azure SQL
◦ Cosmos DB
◦ Azure Tables
◦ MySQL
◦ Azure Files (preview privado)
Formatos de archivo
soportados en blob storage:
ž rtf
ž json
ž html
ž doc
ž ppt
ž xls
ž pdf
ž xml
ž png
17. Paso 2: Fase de cognitive skills y enriquecimiento
◦ El enriquecimiento comienza con las habilidades cognitivas realizando operaciones
atómicas. Por ejemplo, una vez descifrado un PDF, puedes aplicar reconocimiento de
entidad, detección de idioma o extracción de frases clave para producir nuevos
campos en su índice que no están disponibles de forma nativa en la fuente.
◦ En conjunto, la colección de habilidades utilizadas en el pipeline se denomina
conjunto de habilidades (skillset).
18.
19. Un skillset se basa en las habilidades cognitivas integradas o personalizadas que se
conectan. Puede ser tan sencillo o tan complejo como se desee, y determina no solo el
tipo de procesamiento, sino también el orden de las operaciones.
El pipeline de enriquecimiento está especificado el skillset y las asignaciones de campo
definidas como parte de un indexador.
Internamente, el pipeline genera una colección de documentos enriquecidos. Puedes
decidir qué partes de los documentos enriquecidos deben asignarse a campos
indexables en el índice de búsqueda. Por ejemplo, si se aplicaron las habilidades de
extracción de frases clave y reconocimiento de entidades, esos nuevos campos se
convertirían en parte del documento enriquecido y se pueden asignar a campos en su
índice.
20. Habilidades cognitivas
Habilidades integradas
Extracción de entidad
de ubicación
Extracción de
entidad de personas
Reconocimiento
de celebridades
Detección de
propiedades
Análisis de
sentimientos
Detección de
idioma
Extracción de
etiquetas de imagen
Reconocimiento de
texto impreso
Extracción de
palabras clave
Extracción de
entidad de organización
Detección de
rostros
Utilidades de
texto
Azure
Databricks
Machine Learning
VMs
Azure Machine
Learning
Habilidades
personalizadas
Tu habilidad
personalizada
va aquí
21. Ejemplo de un skillset
texto
imágenes OCR
(reconocimiento
de texto)
reconocimiento
de entidades
de organización
fusionar texto
reconocimiento
de entidades
de localización
22. Añade un elemento knowledgeStore para guardar los pipelines
La api-version=2019-05-06-Preview del servicio REST de Search extiende las habilidades
con una definición de KnowledgeStore que proporciona una conexión de
almacenamiento de Azure y proyecciones que describen cómo se guardan los
enriquecimientos.
Esto es complementario al índice.
En un pipeline estándar de IA, los documentos enriquecidos son transitorios, se usan solo
durante la indexación y luego se descartan.
Con el knowledgeStore, se conservan los documentos enriquecidos.
23. Paso 3: Índice de búsqueda y acceso basado en consultas
Cuando finaliza el procesamiento, se genera un índice de búsqueda que consta de
documentos enriquecidos que soportan búsquedas full-text en Azure Cognitive Search.
Al consultar el índice, los desarrolladores y los usuarios acceden al contenido
enriquecido generado por el pipeline.
El índice es como cualquier otro que pueda crear para Azure Cognitive Search: puede
ser complementado con analizadores personalizados, invocar consultas de búsqueda
difusas, agregar búsqueda filtrada o experimentar con perfiles de puntuación para
remodelar los resultados de búsqueda.
24. ◦ Los índices se generan a partir de un esquema que define los campos, atributos y otras
construcciones adjuntas a un índice específico, tales como perfiles de puntuación y
mapas de sinónimos.
◦ Una vez que se define y llena un índice, puedes indexar de forma incremental para
recoger nuevos documentos y actualizaciones de los originales.
◦ Ciertas modificaciones requieren una reconstrucción completa. Se sugiere usar un
pequeño conjunto de datos hasta que el diseño del esquema sea estable.
25. Checklist: Un flujo de trabajo típico
1. Obtén una muestra representativa de tus datos almacenados en Azure. La indexación toma tiempo, así
que comienza con un conjunto de datos pequeño y representativo, y luego aumenta gradualmente a
medida que la solución madura.
2. Crea un data source object en Azure Cognitive Search para proporcionar una cadena de conexión y así
obtener los datos.
3. Crea un skillset con los pasos de enriquecimiento descritos.
4. Define el esquema del índice. La colección Fields incluye campos de los datos de origen. También
deberías eliminar campos adicionales para contener los valores generados para el contenido creado
durante el enriquecimiento.
5. Define el indexador que hace referencia a la fuente de datos, el skillset y el índice.
6. Dentro del indexador, agrega outputFieldMappings. Esta sección asigna la salida del skillset (en el paso 3)
a los campos de entrada en el esquema de índice (en el paso 4).
7. Envía la solicitud Create Indexer que acabas de crear (una petición POST con una definición de
indexador en el cuerpo de la solicitud) para expresar el indexador en Azure Cognitive Search. Este paso
es la ejecución del indexador, invocando el pipeline.
8. Realiza consultas para evaluar los resultados y modifica el código para actualizar los skillsets, el esquema
o la configuración del indexador.
9. Restablece el indexador antes de reconstruir el pipeline.
26. Demo
◦ En esta demostración, combinarás servicios y datos en la nube de Azure para crear un
skillset.
◦ Una vez que todo esté en su lugar, ejecutarás el asistente de importación de datos en
el portal para unirlo todo.
◦ El resultado final es un índice de búsqueda poblado con datos creados por el
procesamiento de IA que puede consultar en el portal mediante el Search Explorer.
◦ Esta demostración usa Azure Cognitive Search, Azure Blob Storage y Azure Cognitive
Services para la IA.
29. ¿Cuándo utilizar el enriquecimiento de IA?
Deberías considerar el uso de habilidades cognitivas integradas…
◦ si tu contenido sin procesar es texto no estructurado incluido en imágenes o es un
contenido que requiere detección y traducción de idioma. La aplicación de IA a
través de las habilidades cognitivas incorporadas puede desbloquear este contenido,
aumentando su valor y utilidad en sus aplicaciones de búsqueda y ciencia de datos.
◦ si tienes código open-source o de terceros que deseas integrar en el pipeline. Modelos
de clasificación que identifican características de varios tipos de documentos se
incluyen en esta categoría, pero se podría usar cualquier paquete que agregue valor
a tu contenido.
30. Call to Action
Introducción al enriquecimiento con IA
https://docs.microsoft.com/es-mx/azure/search/cognitive-search-concept-intro
Quickstart: Creación de un conjunto de aptitudes cognitivas de Azure Cognitive Search en Azure Portal
https://docs.microsoft.com/es-mx/azure/search/cognitive-search-quickstart-blob
Tutorial: Uso de REST y AI para generar contenido en el que se pueden realizar búsquedas desde blobs de Azure
https://docs.microsoft.com/es-mx/azure/search/cognitive-search-tutorial-blob
Tutorial: Uso de C# y AI para generar contenido que permite búsquedas desde blobs de Azure
https://docs.microsoft.com/es-mx/azure/search/cognitive-search-tutorial-blob-dotnet
31.
32. ¡Gracias por
tu atención!
Luis Beltrán
Tomás Bata University in Zlín
Tecnológico Nacional de México en Celaya
luis@luisbeltran.mx luisbeltran.mx @darkicebeam
GitHub:
https://github.com/icebeam7
LinkedIn:
https://linkedin.com/in/luisantoniobeltran
SlideShare:
https://slideshare.net/icebeam
YouTube:
https://youtube.com/user/darkicebeam
About Me:
https://about.me/luis-beltran