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.

Extraer el conteo de frases de archivos de texto basado en una palabra clave

Tengo un conjunto de archivos de texto con fragmentos de texto y necesito buscar en ellos una palabra clave en particular de manera que se devuelva un conjunto de palabras antes y/o después de la palabra clave (es decir, frases) junto con el recuento de las frases en los archivos. Por ejemplo, el contenido de algunos archivos es:

Archivo 1: Este es un gran día. Me gustaría poder ir a un hermoso parque verde hoy, pero desafortunadamente, ¡estamos en cuarentena!

Archivo 2: Tener un hermoso parque verde cerca de tu casa es genial.

Archivo 3: Hoy visité un parque verde. Mi amigo también visitó un parque verde hoy.

Entonces, si busco la palabra clave “parque”, busco que el resultado sea un conjunto de frases (digamos una palabra antes y después de “parque”) clasificadas según cuántas veces aparece la frase en los archivos. Por lo tanto, en este ejemplo, el resultado debería ser:

parque verde hoy: 2

parque verde cerca: 1

¿Hay alguna manera de lograr esto en Python, tal vez usando algunas bibliotecas de NLP o incluso sin ellas? Tengo un código en mi publicación aquí pero eso no resuelve el propósito (probablemente eliminaré esa publicación una vez que reciba una respuesta a esta).

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, esto se puede lograr en Python utilizando bibliotecas de procesamiento del lenguaje natural (NLP) como NLTK o spaCy.

    Una aproximación consiste en tokenizar los archivos de texto en oraciones y luego en palabras, y utilizar una ventana deslizante para extraer frases que contengan la palabra clave.

    Aquí hay un código de ejemplo utilizando NLTK:

    import nltk
    from collections import Counter
    
    palabra_clave = 'parque'
    rutas_archivos = ['archivo1.txt', 'archivo2.txt', 'archivo3.txt']
    
    frases = Counter()
    for ruta_archivo in rutas_archivos:
        with open(ruta_archivo, 'r') as archivo:
            texto = archivo.read()
            oraciones = nltk.sent_tokenize(texto)
            for oracion in oraciones:
                palabras = nltk.word_tokenize(oracion)
                for i, palabra in enumerate(palabras):
                    if palabra == palabra_clave:
                        frase = ' '.join(palabras[i-1:i+2])
                        frases[frase] += 1
    
    for frase, cuenta in frases.most_common():
        print(f'{frase}: {cuenta}')
    

    Este código lee archivos de texto de las rutas_archivos y extrae todas las frases que contienen la palabra clave, añadiéndolas a un objeto Counter para mantener un seguimiento de la frecuencia de cada frase.

    Finalmente, las frases se imprimen en orden de frecuencia.

    Ten en cuenta que este código asume que los archivos están en un formato de texto plano con una oración por línea. Si los archivos están en un formato diferente o contienen múltiples oraciones por línea, puede ser necesario realizar un procesamiento adicional.

Comments are closed.