Presentando la integración de BERTopic con el Hugging Face Hub

Introducing the integration of BERTopic with the Hugging Face Hub.

Estamos encantados de anunciar una importante actualización de la biblioteca Python BERTopic, expandiendo sus capacidades y optimizando aún más el flujo de trabajo para entusiastas y profesionales del modelado de temas. BERTopic ahora admite enviar y recibir modelos de temas entrenados directamente desde y hacia el Hugging Face Hub. Esta nueva integración abre emocionantes posibilidades para aprovechar el poder de BERTopic en casos de uso de producción con facilidad.

¿Qué es el Modelado de Temas?

El modelado de temas es un método que puede ayudar a descubrir temas ocultos dentro de un grupo de documentos. Al analizar las palabras en los documentos, podemos encontrar patrones y conexiones que revelan estos temas subyacentes. Por ejemplo, es más probable que un documento sobre aprendizaje automático utilice palabras como “gradiente” y “incrustación” en comparación con un documento sobre hacer pan.

Cada documento generalmente abarca múltiples temas en diferentes proporciones. Al examinar las estadísticas de las palabras, podemos identificar grupos de palabras relacionadas que representan estos temas. Esto nos permite analizar un conjunto de documentos y determinar los temas que discuten, así como el equilibrio de temas dentro de cada documento. Más recientemente, los nuevos enfoques para el modelado de temas han pasado de utilizar palabras a utilizar representaciones más ricas como las ofrecidas por los modelos basados en Transformer.

¿Qué es BERTopic?

BERTopic es una biblioteca de Python de vanguardia que simplifica el proceso de modelado de temas utilizando diversas técnicas de incrustación y c-TF-IDF para crear grupos densos que permiten temas fácilmente interpretables mientras se mantienen las palabras importantes en las descripciones de los temas.

Una visión general de la biblioteca BERTopic

Aunque BERTopic es fácil de empezar a usar, admite una variedad de enfoques avanzados para el modelado de temas, incluyendo el modelado de temas guiado, supervisado, semi-supervisado y manual. Más recientemente, BERTopic ha agregado soporte para modelos de temas multimodales. BERTopic también tiene un conjunto de herramientas amplio para producir visualizaciones.

BERTopic ofrece una herramienta poderosa para que los usuarios descubran temas significativos dentro de colecciones de texto, obteniendo así información valiosa. Con BERTopic, los usuarios pueden analizar reseñas de clientes, explorar artículos de investigación o categorizar artículos de noticias con facilidad, convirtiéndolo en una herramienta esencial para cualquier persona que busque extraer información significativa de sus datos de texto.

Gestión de modelos de BERTopic con el Hugging Face Hub

Con la última integración, los usuarios de BERTopic pueden enviar y recibir sus modelos de temas entrenados al Hugging Face Hub de manera fluida. Esta integración marca un hito significativo en la simplificación de la implementación y gestión de modelos de BERTopic en diferentes entornos.

El proceso de entrenar y enviar un modelo de BERTopic al Hub se puede hacer en pocas líneas

from bertopic import BERTopic

topic_model = BERTopic("english")
topics, probs = topic_model.fit_transform(docs)
topic_model.push_to_hf_hub('davanstrien/transformers_issues_topics')

Luego, puede cargar este modelo en dos líneas y usarlo para predecir nuevos datos.

from bertopic import BERTopic
topic_model = BERTopic.load("davanstrien/transformers_issues_topics")

Aprovechando el poder del Hugging Face Hub, los usuarios de BERTopic pueden compartir, versionar y colaborar en sus modelos de temas sin esfuerzo. El Hub actúa como un repositorio central, permitiendo a los usuarios almacenar y organizar sus modelos, facilitando la implementación de modelos en producción, compartirlos con colegas o incluso mostrarlos a la comunidad más amplia de PLN.

Puede utilizar el filtro libraries en el hub para buscar modelos de BERTopic.

Una vez que encuentre un modelo de BERTopic que le interese, puede utilizar el widget de inferencia del Hub para probar el modelo y ver si puede ser adecuado para su caso de uso.

Una vez que tenga un modelo de temas entrenado, puede enviarlo al Hugging Face Hub en una línea. Al enviar su modelo al Hub, se creará automáticamente una tarjeta de modelo inicial para su modelo, que incluye una descripción general de los temas creados. A continuación, puede ver un ejemplo de los temas resultantes de un modelo entrenado en datos de ArXiv .

Haga clic aquí para obtener una descripción general de todos los temas.

Gracias al procedimiento de guardado mejorado, el entrenamiento en grandes conjuntos de datos genera tamaños de modelo pequeños. En el ejemplo a continuación, se entrenó un modelo de BERTopic con 100,000 documentos, lo que resultó en un modelo de ~50MB que conserva todas las funcionalidades del modelo original. ¡Para inferencia, el modelo se puede reducir aún más a solo ~3MB!

Los beneficios de esta integración son especialmente notable para casos de uso de producción. Los usuarios ahora pueden implementar sin esfuerzo modelos de BERTopic en sus aplicaciones o sistemas existentes, asegurando una integración perfecta dentro de sus canalizaciones de datos. Este flujo de trabajo optimizado permite una iteración más rápida y actualizaciones eficientes del modelo, y garantiza consistencia en diferentes entornos.

safetensors: Asegurando la gestión segura de modelos

Además de la integración con Hugging Face Hub, BERTopic ahora admite la serialización utilizando la biblioteca safetensors. Safetensors es un nuevo formato simple para almacenar tensores de manera segura (en lugar de pickle), que sigue siendo rápido (copia cero). Estamos emocionados de ver cada vez más bibliotecas aprovechando safetensors para la serialización segura. Puede leer más sobre una auditoría reciente de la biblioteca en esta publicación de blog.

Un ejemplo de uso de BERTopic para explorar conjuntos de datos RLFH

Para ilustrar parte del poder de BERTopic, veamos un ejemplo de cómo se puede utilizar para monitorear cambios en los temas en los conjuntos de datos utilizados para entrenar modelos de chat.

El último año ha visto la publicación de varios conjuntos de datos para el Aprendizaje por Refuerzo con Retroalimentación Humana. Uno de estos conjuntos de datos es el conjunto de datos de Conversaciones de OpenAssistant. Este conjunto de datos se produjo mediante un esfuerzo mundial de crowdsourcing que involucró a más de 13,500 voluntarios. Si bien este conjunto de datos ya tiene algunas puntuaciones de toxicidad, calidad, humor, etc., es posible que deseemos obtener una mejor comprensión de qué tipos de conversaciones se representan en este conjunto de datos.

BERTopic ofrece una forma de obtener una mejor comprensión de los temas en este conjunto de datos. En este caso, entrenamos un modelo en la parte de respuestas del asistente en inglés de los conjuntos de datos. Lo que resulta en un modelo de temas con 75 temas.

BERTopic nos ofrece varias formas de visualizar un conjunto de datos. A continuación, podemos ver los 8 principales temas y sus palabras asociadas. Podemos ver que el segundo tema más frecuente consiste principalmente en ‘palabras de respuesta’, que a menudo vemos con frecuencia en modelos de chat, es decir, respuestas que pretenden ser ‘educadas’ y ‘útiles’. También podemos ver una gran cantidad de temas relacionados con programación o temas informáticos, así como física, recetas y mascotas.

databricks/databricks-dolly-15k es otro conjunto de datos que se puede utilizar para entrenar un modelo de RLFH. El enfoque utilizado para crear este conjunto de datos fue bastante diferente al conjunto de datos de Conversaciones de OpenAssistant, ya que fue creado por empleados de Databricks en lugar de ser obtenido mediante crowdsourcing a través de voluntarios. ¿Quizás podemos usar nuestro modelo de BERTopic entrenado para comparar los temas en ambos conjuntos de datos?

Las nuevas integraciones de BERTopic Hub significan que podemos cargar este modelo entrenado y aplicarlo a nuevos ejemplos.

topic_model = BERTopic.load("davanstrien/chat_topics")

Podemos predecir en un solo ejemplo de texto:

example = "Stalemate is a drawn position. It doesn't matter who has captured more pieces or is in a winning position"
topic, prob = topic_model.transform(example)

Podemos obtener más información sobre el tema predicho

topic_model.get_topic_info(topic)

Aquí podemos ver que los temas predichos parecen tener sentido. Es posible que deseemos extender esto para comparar los temas predichos para todo el conjunto de datos.

from datasets import load_dataset

dataset = load_dataset("databricks/databricks-dolly-15k")
dolly_docs = dataset['train']['response']
dolly_topics, dolly_probs = topic_model.transform(dolly_docs)

Luego podemos comparar la distribución de temas en ambos conjuntos de datos. Aquí podemos ver que parece haber una distribución más amplia de temas en el conjunto de datos de dolly según nuestro modelo de BERTopic. Esto podría ser resultado de los enfoques diferentes para crear ambos conjuntos de datos (probablemente queremos volver a entrenar un BERTopic en ambos conjuntos de datos para asegurarnos de no estar perdiendo temas y confirmar esto).

Comparación de la distribución de temas entre los dos conjuntos de datos

Potencialmente podemos usar modelos de temas en un entorno de producción para monitorear si los temas se desvían demasiado de una distribución esperada. Esto puede servir como una señal de que ha habido un cambio entre sus datos de entrenamiento originales y los tipos de conversaciones que está viendo en producción. También puede decidir utilizar un modelo de temas mientras recopila datos de entrenamiento para asegurarse de obtener ejemplos para temas que pueda considerar importantes.

Comience con BERTopic y Hugging Face Hub

Puede visitar la documentación oficial para obtener una guía de inicio rápido y obtener ayuda para usar BERTopic.

Puede encontrar aquí un cuaderno Colab de inicio que muestra cómo puede entrenar un modelo BERTopic y enviarlo al Hub.

Algunos ejemplos de modelos BERTopic que ya están en el hub:

  • MaartenGr/BERTopic_ArXiv: un modelo entrenado en ~30000 artículos de ArXiv sobre computación y lenguaje (cs.CL) después de 1991.
  • MaartenGr/BERTopic_Wikipedia: un modelo entrenado en 1000000 páginas de la Wikipedia en inglés.
  • davanstrien/imdb_bertopic: un modelo entrenado en la división no supervisada del conjunto de datos IMDB.

Puede encontrar una descripción completa de los modelos BERTopic en el hub utilizando el filtro de bibliotecas.

¡Le invitamos a explorar las posibilidades de esta nueva integración y compartir sus modelos entrenados en el hub!