Skip to main content

Librería para el procesamiento y análisis de texto con Python

Project description

ConTexto - Librería de procesamiento y análisis de textos

screenshot

PyPI version fury.io PyPI pyversions PyPI license Downloads GitHub forks

Descripción

La librería de procesamiento y análisis de texto, ConTexto, tiene como objetivo principal proporcionar herramientas que simplifiquen las tareas y proyectos que involucren procesamiento y análisis de texto. La librería fue desarrollada en el lenguaje de programación de Python y contiene un conjunto de funciones que permiten realizar transformaciones y análisis de textos de forma simple, utilizando diferentes técnicas para lectura y escritura de archivos de texto, incluyendo reconocimiento óptico de caracteres (OCR), limpieza de textos y remoción de palabras no deseadas para el análisis (stop words), traducción y corrección de textos, generación de nubes de palabras, cálculo de similitudes entre textos, entre otras.

La librería surge como solución a tres principales aspectos. En primer lugar, la necesidad de integrar todos los esfuerzos y desarrollos que ha hecho la Unidad de Científicos de Datos (UCD) del DNP, en proyectos relacionados con la analítica de texto; en segundo lugar, evitar reprocesos en la construcción de scripts para estas tareas, y finalmente, aumentar la cantidad de librerías enfocadas en el análisis de texto en español que existen actualmente.

Prerrequisitos

Antes de proceder con la instalación de ConTexto asegúrese de tener instalado (Estos dos paquetes son necesarios para utilizar el reconocimiento óptico de caracteres (OCR) de ConTexto):

  • Tesseract
  • Poppler v0.68.0

Para mayor información consultar la sección de instalación

Instalación

Para la instalación de la librería se debe utilizar el gestor de paquetes pip. Por buenas prácticas, se sugiere antes de la instalación crear un entorno virtual que permita aislar las librerías y evitar conflictos de versiones con el entorno de desarrollo base del computador. Se debe mencionar que se requiere hacer instalaciones adicionales para el correcto funcionamiento de algunos módulos de la librería. Para más información, consultar la sección de instalación en la página de documentación.

pip install contexto

Documentación

La librería cuenta con una documentación que detalla las funciones que la conforman, al igual que ejemplos de uso y demás información de interés relacionada con esta. Para acceder a la documentación, siga el siguiente enlace:

Documentación - ConTexto - Librería de procesamiento y análisis de textos.

Ejemplo

En esta sección nos enfocaremos en presentar unos cortos ejemplos de uso de algunas funciones de la librería teniendo dos enfoques en particular: la limpieza de textos y la visualización de textos. Para mayor información y detalle sobre ejemplos de estas y otras funciones de la librería, se puede consultar la sección de ejemplos de la documentación.

Ejemplo - Limpieza de textos

Para este ejemplo utilizaremos el siguiente texto de prueba.

texto_prueba = '''hola, esto es una prueba para verificar que la limpieza
sea hecha con precisión, empeño y calidad! Esperamos que esté todo de 10.

Desde Amazonas hasta la Guajira y san andrés, desde John y María hasta Ernesto,
esperamos       que todo funcione de manera correcta.'''

Se debe importar el módulo de limpieza.

from contexto.limpieza import *

La librería cuenta con varias funciones de limpieza como son limpieza_basica, limpieza_texto, remover_acentos, remover_palabras_cortas y otras.

  • La función limpieza_texto permite realizar una limpieza más completa del texto. La función permite:

    • Pasar todo el texto a minúsculas
    • Quitar signos de puntuación
    • Quitar stopwords (palabras y/o expresiones). Para esto, se pueden pasar directamente las listas de palabras y expresiones a quitar, o se puede pasar un archivo que contenga esta información. (configurable)
    • Quitar palabras de una longitud menor a n caracteres (configurable)
    • Quitar números (configurable)
    • Quitar acentos (configurable)
limpio_completo = limpieza_texto(texto_prueba, n_min=3, quitar_acentos=True, 
	lista_palabras = ['esto','sea', 'con', 'que', 'para', 'este', 'una'])

print(limpio_completo)
hola prueba verificar limpieza hecha precision empeno calidad esperamos todo desde amazonas hasta guajira san andres desde john maria hasta ernesto esperamos todo funcione manera correcta

Ejemplo - Visualización de textos

Para este ejemplo, se va a trabajar con el texto de la novela "Don Quijote de la Mancha", escrita por Miguel de Cervantes Saavedra. El texto completo de esta novela está en la carpeta de ejemplos/entrada del repositorio, y fue descargado desde la página del Proyecto Gutenberg, que tiene a su disposición miles de libros de forma gratuita.

Procedemos a importar los módulos necesarios.

from contexto.lectura import leer_texto
from contexto.limpieza import limpieza_texto, lista_stopwords, remover_stopwords
from contexto.exploracion import grafica_barchart_frecuencias
from contexto.exploracion import obtener_ngramas, par_nubes

La función leer_texto del módulo lectura es utilizada para extraer el texto del archivo que contiene la novela. Luego, se realiza una limpieza estándar del texto, para que esté mejor adecuado para su exploración. Para esto, se utilizan las funciones limpieza_texto y lista_stopwords, del módulo limpieza.

Finalmente, en el texto aparece en varias ocasiones la expresión "project gutenberg", el nombre del proyecto que pone a disposición la novela. Como esta información no está directamente relacionada al texto que nos interesa, se va a remover utilizando la función remover_stopwords.

  • Cargar y limpiar texto de prueba
ruta_cuento = 'entrada/cervantes_don_quijote.txt'

texto_prueba = leer_texto(ruta_cuento)
texto = limpieza_texto(texto_prueba, quitar_numeros=False, n_min=3, lista_palabras=lista_stopwords())
texto = remover_stopwords(texto, lista_expresiones=['project gutenberg'])

Una vez limpio el texto, procedemos a utilizar la función obtener_ngramas que permite encontrar n-gramas, o conjuntos de n palabras seguidas, donde n es un número entero mayor a cero. Por ejemplo, si n=1 o n=2, la función obtendrá las palabras o los bigramas del texto, respectivamente.Con esta información se puede obtener la frecuencia de cada n-grama, y así conocer cuáles son los más mencionados en el texto.

Esto puede ser graficado de varias maneras, como por ejemplo mediante nubes de palabras, en las cuales el tamaño de un término es proporcional a su frecuencia de aparición.

  • Obtener listas de palabras y bigramas más frecuentes
unigramas = obtener_ngramas(texto, 1)
bigramas = obtener_ngramas(texto, 2)

bigramas[98:105]
['ingenioso hidalgo',
 'hidalgo mancha',
 'mancha compuesto',
 'compuesto miguel',
 'miguel cervantes',
 'cervantes saavedra',
 'saavedra tasaron']
  • Graficar y guardar nubes de palabras y bigramas

Si se utiliza el parámetro "ubicacion_archivo", la imagen generada se guardará en la ubicación especificada.

La función par_nubes permite generar un par de nubes de palabras (una junto a otra).

par_nubes(texto, n1=1, n2=2, ubicacion_archivo='salida/nube_uni_bi.jpg')

screenshot

  • Gráficas de barras con las frecuencias

Los n-gramas más frecuentes también se pueden visualizar mediante gráficas más estándar como, por ejemplo, gráficos de barras que muestren los términos más frecuentes. La función grafica_barchart_frecuencias permite obtener estas gráficas.

grafica_barchart_frecuencias(texto, ubicacion_archivo='salida/barras_palabras.jpg', 
                             titulo='Frecuencias de palabras', dim_figura=(7,4))

screenshot

Control de cambios

Para ver todos los cambios en las versiones de ConTexto ver el archivo changelog

Contribuciones a ConTexto

Todas las contribuciones, reportes de errores, corrección de errores, las mejoras de la documentación y las ideas son bienvenidas.

Puede encontrar una descripción detallada de cómo contribuir en la Wiki de ConTexto

También lo invitamos a revisar el :calendar: Tablero TODO de ConTexto, donde hay una serie de temas listados en los que el equipo UCD se encuentra trabajando.

Licencia MIT license

MIT License

La librería ConTexto - Librería de procesamiento y análisis de textos se encuentra publicada bajo la licencia MIT
Copyleft (c) 2020 Departamento Nacional de Planeación - DNP Colombia

Para mayor información puede consultar el archivo de Licencia

:telephone_receiver: Contacto

Para comunicarse con la Unidad de Científicos de Datos (UCD) de la Dirección de Desarrollo Digital (DDD) del DNP, lo puede hacer mediante el correo electrónico ucd@dnp.gov.co

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ConTexto-0.2.0.tar.gz (129.5 kB view details)

Uploaded Source

Built Distribution

ConTexto-0.2.0-py3-none-any.whl (136.5 kB view details)

Uploaded Python 3

File details

Details for the file ConTexto-0.2.0.tar.gz.

File metadata

  • Download URL: ConTexto-0.2.0.tar.gz
  • Upload date:
  • Size: 129.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.5

File hashes

Hashes for ConTexto-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4641ed67012e4be0cfeeb8953506e373abb39824c107ee57111034c2a0467048
MD5 18ea211f5f34acb8ea880751a1eb3dda
BLAKE2b-256 bc9e661f12bcb1d3acd4e0fb7c9e5f78c6dd33b503d3ad95e82511dc085582bc

See more details on using hashes here.

File details

Details for the file ConTexto-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ConTexto-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 136.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.5

File hashes

Hashes for ConTexto-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd6c102ef03f0c6c7258e0f7a1a57dabc40f992054501c635991865f47a76c8
MD5 b8d3c2a68113a52adc6136fb39ea7b99
BLAKE2b-256 0f64541711e9f614284dc8f93d4a8d5935d9f6c7e4f13486a7e75026ede2f219

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page