Ejemplos de aplicación de recuperación de información en imagen y texto: hacia la IA

Estás leyendo la publicación: Ejemplos de aplicación de recuperación de información en imagen y texto: hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

Recuperación de información en el caso de uso de imagen y texto

Hola, bienvenidos a mi segunda entrada en el blog. En esta publicación, quiero escribir lo que compartí cuando me invitaron como profesor invitado en la Universidad de Indonesia para el curso de Recuperación de información avanzada. Compartí varias ideas de implementación de recuperación de información que se pueden usar en el mundo real.

Escribiré sobre detalles técnicos de alto nivel aquí. Entonces, creo que esta publicación es amigable para los novatos, siempre que conozca los conceptos básicos de la recuperación de información. Aunque mencione PNL o Imagen arriba, los describiré con intuición.

Entonces, diviértete leyendo mi publicación :).

Introducción

La recuperación de información (IR) es un proceso de recuperación de recursos relevantes a partir de la recopilación de los propios recursos. Una de las implementaciones de recuperación de información más populares y ampliamente utilizadas es un motor de búsqueda como Google, Bing y DuckDuckGo. Reciben una consulta del usuario y devuelven documentos relevantes según la propia consulta.

El algoritmo de IR compara principalmente la consulta con la colección de fuentes con el algoritmo de puntuación. El algoritmo de puntuación se utiliza para calcular la relevancia entre la consulta y el documento en sí. El documento recuperado ordenado se devuelve al usuario.

Compartiré algunas herramientas básicas y el algoritmo para la implementación de la recuperación de información con PNL e Imagen. Son “Extracción automática de pedidos” y “Recuperación de imágenes para sitios web de imágenes”. También proporcionaré los antecedentes de la utilidad de cada ejemplo.

Extracción automática de pedidos

Extracción automática de pedidos es un servicio para extraer y analizar automáticamente los mensajes de pedidos entrantes. Por ejemplo, un vendedor de ropa implementa este servicio en una aplicación de mensajería (podemos llamarlo chatbot) y extrae la información que el vendedor necesita automáticamente. Luego, la información extraída se utiliza para procesar la transacción. Mira a continuación el ejemplo:

[BUYER]:
Hola este es mi pedido:

Nombre: **Si Meong**
Dirección: **Calle Miau Miau**

Orden:
**1** **Camiseta Miau**

¡Gracias!

Saludos,

Cliente

¿Por qué es importante esta implementación?

Imagina que tienes una gran tienda que permite ordenar un producto usando aplicaciones de mensajería. En un día, tiene 2000 pedidos de los clientes. Necesitamos ver los datos, y el pedido del producto, procesarlos y validarlos. Sí, será una molestia hacerlo todo manualmente, con solicitudes grandes. Es por eso que necesitamos una forma de automatizarlo.

¿Cómo y qué hacer para implementarlo?

Una de las prácticas habituales fáciles y comunes para automatizarlo es mediante el uso de una plantilla. Por ejemplo:

Nombre:
Dirección:
Pedido:

Se puede implementar fácilmente mediante el uso de una técnica de expresión regular (Regex). Lamentablemente, hay algunas debilidades en su uso:

  1. Rígido, el usuario debe poner su mensaje de acuerdo a la plantilla. El error tipográfico o cualquier información adicional hará que el servicio no pueda extraer la información.
  2. Un error tipográfico en el nombre del producto hará que el producto no se detecte y no se pueda extraer.

Aquí es donde el procesamiento del lenguaje natural (NLP), especialmente mediante el uso de un sistema de extracción de entidades nombradas (NER), puede resolver el primer problema. El segundo problema se puede resolver utilizando un sistema de Recuperación de Información. Primero, extraemos las entidades que queremos extraer más el nombre del producto y la cantidad. Para resolver el problema del error tipográfico, utilizamos técnicas de recuperación de información para recomendar productos similares si el usuario comete un error tipográfico.

🔥 Recomendado:  Los 7 mejores ejemplos de planes de negocios

Fin de la implementación

Por lo general, el servicio se implementa detrás del servicio de back-end como se muestra a continuación:

Aquí, nos centraremos solo en el servicio de IA y devolveremos la información extraída.

Para los servicios de IA, se ve así:

A continuación se muestra el ejemplo de la entrada del servicio.

[BUYER]:
Hola este es mi pedido:

Nombre: **Si Meong**
Dirección: **Calle Miau Miau**

Orden:
**1** **Camiseta Miau**
**4** **Shoet Moew**
¡Gracias!

Saludos,

Cliente

Asumimos que Shoet Moew no está en la lista de productos y productos similares son Shirt Moew y Short Moew.

Información pasada (en JSON)

{
“nombre”: “Si Meong”,
“dirección”: “Calle Miau Miau”,
“orden”: [
{
“qty”: 1,
“product_name”: “t_shirt_meow”
}
],
“sugerir”: [
{
“query”: “Shoet Moew”,
“qty”: 4,
“suggest”: [“shirt_moew”, “short_moew”]
}
]
}

Primero, entraremos en el detalle de NER.

Reconocimiento de entidad nombrada (NER)

La descripción de NER se puede ver a continuación.

La salida del NER ha extraído la entidad que queremos. Por ejemplo:

  1. Nombre
  2. DIRECCIÓN
  3. Banco
  4. Nota
  5. nombre del producto
  6. Cantidades de productos
  7. Número de teléfono

En el ejemplo anterior, solo extraemos el nombre, la dirección, la cantidad del producto y el nombre.

Entrenamiento NER: Datos

Para crear un sistema NER, utilizamos un servicio listo para usar (a menudo no adecuado para sus necesidades) o desarrollamos su sistema NER. La técnica popular actual para crear un sistema NER está utilizando Machine Learning. Para crearlo, necesitamos entrenar un modelo NER con un conjunto de datos NER etiquetado. Necesita un montón de datos que tengan pares de texto con su etiqueta de entidad.

El problema cuando entrenas tu modelo es preparar los datos. Necesitamos datos que sean similares a la distribución del escenario del caso real. Si tiene los datos, puede anotarlos manualmente. Pero, si tiene pocos datos o, en el peor de los casos, no tiene ningún dato,

Puede codificar para generar síntesis de datos, usar una biblioteca de síntesis de datos o utilizar gramática libre de contexto (CFG) para generarlos. Si usa CFG, puede usar el paquete nltk en Python. Tiene una herramienta CFG.

Entrenamiento NER: Modelo

Necesitamos un modelo que pueda generalizar la extracción de entidades en función de los datos proporcionados. El enfoque popular actual en el aprendizaje automático utiliza un modelo de aprendizaje profundo. En PNL, es popular usar un modelo pre-entrenado como BERT o ROBERTA. Lo que tenemos que hacer es entrenar el modelo previamente entrenado nuevamente a los datos (lo llamamos ajuste fino).

Para los datos de Indonesia, puede usar el modelo IndoBERT o IndoNLU y entrenarlos para sus datos. Producirá un modelo de gran calidad. Puedes buscarlos en cara de abrazo y ajuste el modelo a sus datos.

Recuperación de información: elasticsearch

Una de las Recuperaciones de Información populares en el texto es elasticsearch. Es una herramienta de recuperación de información construida sobre Apache Lucene, donde está optimizada para realizar trabajos de recuperación.

Es rápido porque utiliza el índice invertido para hacer su sistema de búsqueda. Hace coincidir el término de la consulta con el término del documento. No buscará un documento que no tenga el término (o palabra) de la consulta. Una vez seleccionados los documentos, se ordenarán mediante una función de puntuación.

En este problema, tenemos un problema de error tipográfico. Por lo tanto, una coincidencia exacta no es adecuada. Afortunadamente, la búsqueda elástica tiene una consulta difusa que puede resolver el problema del error tipográfico. usará distancia levenshtein algoritmo para expandir el término en la consulta. Puedes leer más detalles sobre esto pagina de wikipedia.

🔥 Recomendado:  ¿Por qué mis fotos están borrosas en Facebook? (ARREGLAR AQUÍ)

Elastic Search tiene su propia función de puntuación para clasificar el documento recuperado. Sigue la implementación de Apache Lucene. Para más detalles, puedes visitar este página.

Resumen de extracción automática de pedidos

Usamos un modelo NER para extraer entidades del mensaje. Luego use la herramienta IR (elasticsearch) para hacer coincidir el producto con la lista de productos del vendedor.

Aquí hay un ejemplo de la respuesta del chatbot basada en la entrada anterior:

[RESPONSE]:

Aquí están sus datos biográficos:
Nombre: Si Meong
Dirección: Calle Miau Miau

Orden:
1 x Camiseta Miau = IDR 2.000.000
“Shoet Moew” no se encuentra, ¿quiso decir “Camisa Moew”, “Short Moew”?

Recuperación de imágenes

Como decía el título, es una recuperación de información mediante el uso de imágenes en lugar de texto. Dada una imagen de consulta, devuelve imágenes que son similares a la consulta.

¿Por qué es importante esta implementación?

A veces, los usuarios olvidan el nombre de algo que quieren buscar. Supongamos que el usuario tiene la imagen, la opción de buscar es mediante la similitud de imagen. Además, hay algunos casos en los que los usuarios quieren buscar algo por imagen en lugar de por el nombre.

¿Cómo y qué hacer para implementarlo?

Necesitamos implementar un sistema IR que pueda recuperar imágenes usando una imagen como consulta. Para hacer eso, podemos usar el conocimiento de Computer Vision con él. Necesitamos representar la imagen en algo que pueda usarse como entrada para la puntuación de similitud. En un sistema IR, hay un término llamado Modelo de espacio vectorial, donde representa documentos (en este caso, imágenes) como vectores de pesos. Entonces, necesitamos algo para representar la imagen en un vector.

Puede extraer el vector que puede representar la imagen utilizando un modelo de aprendizaje profundo en visión por computadora. Puede aprovechar un modelo preentrenado de visión artificial. Significa que puede usar un modelo para generar un vector que se utilizará para calcular la relevancia tanto para la consulta como para los documentos (imágenes). Mediante el uso de un algoritmo de distancia o similitud, podemos calcular la distancia entre cada una de las imágenes.

Aquí está la canalización del servicio de IA:

Profundizaremos en los detalles de cada uno de ellos.

modelo de extracción

Como dije anteriormente, usamos un modelo para representar la imagen como un vector. Hay muchos modelos preentrenados de visión por computadora que se pueden usar, como VGG-net, Resnet, Eff-net y VIT. Podemos usar uno de ellos sin ajustarlo nuevamente y generar el vector. Aquí hay un ejemplo:

A veces, el modelo preentrenado necesita más refinamiento adecuado a sus necesidades. Para hacerlo, puede volver a entrenarlo ajustándolo con ArcFace. Necesita datos de imagen etiquetados para entrenarlos donde cada clase le dice que deberían tener una salida vectorial casi similar. El ajuste fino hará que cada imagen de una clase se acerque más entre sí. Alcanza una mayor similitud intraclase y discrepancia entre clases. Esta técnica se usa a menudo en el modelo de reconocimiento facial.

Extracción de imágenes en acción

Supongamos que tenemos un almacén de imágenes (p. ej.: NFT) y empleamos la recuperación de imágenes, usted elige usar VGGNet como el modelo preentrenado de visión por computadora. Suponga que tiene 4 imágenes en su colección de base de datos:

🔥 Recomendado:  Cómo crear el mejor contenido para el invierno de 2023-2023

Extrae el vector de la consulta de su imagen. También haces eso con tus imágenes en la base de datos.

Finalmente, clasifique la similitud entre las imágenes con cada una de las imágenes en su base de datos.

Para clasificar la similitud, hay un buen código abierto que podemos usar. Se llama Faiss.

Búsqueda de similitud: faiss

Faiss es una biblioteca que puede realizar búsquedas de similitud de vectores densos. Se utiliza popularmente para la recuperación de imágenes. Alberga varios algoritmos de distancia de similitud, como la similitud euclidiana y del coseno. Puede ser rápido porque tiene un buen truco para hacer una indexación rápida (cálculo de similitud).

Eficiencia de Faiss: partición en celdas de Voronoi y cuantificación

Estas dos funciones están disponibles en Faiss para hacerlo de manera eficiente. El primero es la capacidad de particionar o agrupar sus vectores en su base de datos indexada en celdas de Voronoi. Agrupa sus datos en k grupos. Cuando realiza una consulta, compara los vectores con todos los puntos del centroide (centro) de los grupos. Luego, toma n clústeres y realiza una búsqueda completa de los datos en los n clústeres. El usuario elige n y k. Vea a continuación la ilustración de las celdas de Voronoi.

Otro truco increíble es usar la cuantización que tiene el Faiss. Reduce los vectores originales y cuantifica el valor en el vector. Primero, divide los vectores en el subvector. Luego, agrupa su vector en función de todos los vectores en la base de datos, luego cambia el valor de cada subvector a la ID del clúster. Puedes ver la ilustración a continuación:

Las imágenes anteriores y las explicaciones están tomadas de este Blog (gracias por la genial ilustración). No dude en visitarlo para más detalles.

Conclusión

Escribí 2 implementaciones usando Recuperación de información en texto e imágenes. Hay herramientas populares que puede usar aquí, como elasticsearch y faiss. Hay ingeniosos trucos que esas herramientas tienen para hacer una búsqueda eficiente. Podemos usarlos para implementar un sistema IR en producción.

No es la superficie sobre cómo implementar un sistema IR. también hay un paso adicional que puede usar, como el ajuste fino para mejorar el modelo y volver a clasificarlo. Puedes estudiarlos para hacer un sistema IR más poderoso.

Siéntase libre de comentar o preguntarme sobre esta publicación a continuación.

Nota

Esta publicación se ha vuelto a publicar desde mi blog: https://haryoa.github.io/posts/ejemplo-ir-systems/ . ¡Anímate a visitarlo!


Los ejemplos de la aplicación de recuperación de información en imágenes y texto se publicaron originalmente en Towards AI en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.

Publicado a través de Hacia la IA