es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una función de Gensim o cualquier otro paquete de Python para generar automáticamente una etiqueta para modelos de temas?

Tengo un conjunto de modelos de temas generados por el modelo LDA de Gensim.
Me gustaría que se etiqueten automáticamente para poder elegir etiquetas significativas para cada tema más fácilmente.
Me he encontrado con una función en el paquete textmineR del lenguaje R llamada LabelTopics, que creo que hace lo que estoy buscando.
Quería saber si existe alguna función para este tema similar a la función mencionada del paquete R disponible en paquetes de Python como Gensim.

Por favor, avísenme. Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una función similar a la función LabelTopics en el paquete textmineR de R disponible en el módulo LdaModel de Gensim llamada show_topics. Esta función se puede usar para mostrar las palabras más relevantes en cada tema, que luego se pueden usar para etiquetar los temas. Además de mostrar las palabras más relevantes, también se puede especificar el número de palabras principales a mostrar, así como si mostrar sus probabilidades correspondientes. Aquí tienes un ejemplo:

    from gensim.models import LdaModel
    from gensim.corpora import Dictionary
    
    # cargue su modelo LDA pre-entrenado y su diccionario
    RUTA_MODELO_LDA = 'ruta/hacia/el/modelo/lda'
    RUTA_DICCIONARIO = 'ruta/hacia/el/diccionario'
    
    lda_model = LdaModel.load(RUTA_MODELO_LDA)
    dictionary = Dictionary.load(RUTA_DICCIONARIO)
    
    # mostrar las 10 palabras principales para cada tema
    temas = lda_model.show_topics(num_topics=-1, num_words=10, formatted=False, dictionary=dictionary)
    
    # imprimir los temas con sus palabras principales y probabilidades correspondientes
    for tema in temas:
        palabras = [prob_palabra[0] for prob_palabra in tema[1]]
        probabilidades = [round(prob_palabra[1], 2) for prob_palabra in tema[1]]
        print(f'Tema {tema[0]}: {", ".join(palabras)} ({", ".join(map(str, probabilidades))})')
    

    Esto producirá una salida similar a la siguiente:

    Tema 0: coche, motor, velocidad, aceite, cambio_aceite, gas, combustible, neumático, freno, caballos_de_fuerza (0.08, 0.08, 0.06, 0.05, 0.04, 0.03, 0.03, 0.03, 0.03, 0.03)
    Tema 1: película, actor, trama, personaje, escena, director, diálogo, guión, cámara, audiencia (0.06, 0.06, 0.04, 0.04, 0.04, 0.03, 0.03, 0.03, 0.03, 0.03)
    ...
    

    Con base en estas palabras principales, puedes crear etiquetas significativas para cada tema.

Comments are closed.