Ir al contenido principal

Comprendiendo el lenguaje humano a través del procesamiento del lenguaje natural: técnicas y algoritmos clave

Introducción El procesamiento del lenguaje natural es una rama de la informática que se centra en la comprensión y el procesamiento del lenguaje humano por parte de las máquinas. A través del uso de técnicas y algoritmos especializados, el procesamiento del lenguaje natural nos permite interactuar con las máquinas a través del lenguaje natural, como lo hacemos con otras personas. El procesamiento del lenguaje natural tiene una amplia gama de aplicaciones, desde el análisis de sentimiento en redes sociales hasta la traducción automática y el procesamiento de consultas de búsqueda. Esta tecnología ha revolucionado la forma en que nos comunicamos y accedemos a la información, y su importancia solo ha ido en aumento con el tiempo. A lo largo de los años, el procesamiento del lenguaje natural ha evolucionado gracias a avances en técnicas y algoritmos. En este artículo, exploraremos las técnicas y algoritmos clave que se utilizan en el procesamiento del lenguaje natural y cómo juegan un pape

Creación de un mini corpus del español con libros de dominio público

Los libros de dominio público son un gran recurso para generar un pequeño corpus del español gracias a la variedad de los textos. En este artículo os explicamos cómo generarlo de una manera muy sencilla a partir de los documentos indexados en la web de textos.info.

En textos.info hay más de 4000 libros disponibles para leer y/o descargar. Desde clásicos como "La Ilíada", "La Biblia" o "El Quijote" a libros más "modernos" (comienzos del s.XX) como son "Poeta en Nueva York", "Niebla" o "La Metamorfosis".



Requisitos

  • Python 3.8 - Todos los ejemplos que usan python se han ejecutado con esta versión.
  • PyEnv o Conda - Recomendamos el uso de alguna de estas herramientas para la gestión de versiones de Python y los entornos virtuales.
  • Pandoc 2.14 - Herramienta que permite convertir entre varios formatos como puede ser de ePub a texto plano.

Requisitos para los scripts de Python

Para que los scripts de Python se ejecuten correctamente es necesario instalar los siguientes paquetes con pip:

beautifulsoup4==4.9.3
httpx==0.18.2
lxml==4.6.3
pypandoc==1.6.3
tqdm==4.61.2
gensim==4.0.1

Puedes copiar el listado anterior y meterlo en un fichero requirements.txt para instalarlos de golpe. Por ejemplo, supongamos que el directorio de trabajo es "corpuslibros" y el mencionado archivo ya tiene el listado de paquetes:

~$ cd corpuslibros 
~/corpuslibros$ pip install -r requirements.txt

Con esto quedarían todas las dependencias instaladas. Ahora viene la parte más interesante.

Descarga de libros

Lo primero de todo es descargarnos los libros que tenemos a disposición en textos.info para lo que nos ayudaremos del catálogo OPDS que tienen implementado y este pequeño crawler que se descargará de manera automática todos los libros disponibles:

Puedes descargar el archivo, después de comprobar lo que hace, y ejecutarlo de la siguiente manera:

~/corpuslibros$ python textos_info_donwload.py

Tras un rato tendrás todos los libros descargados en el directorio "textos.info" en formato de texto plano.

Limpieza

El siguiente paso consiste en limpiar estos archivos. Si los abrimos, veremos que tiene una cabecera y un pie que se repite en todos los archivos. Lo que haremos será eliminarlos para dejar el texto que nos interesa que es el propio del libro. Para esto dejamos el siguiente script listo para ser ejecutado:

En definitiva, lo que hace es buscar la línea de final de cabecera y la de principio de pie para quedarse con lo que hay en el medio. Además de esto, elimina todos los saltos de línea haciendo que todo el texto ocupe una línea. Ejecuta el script de la siguiente manera para ver el progreso:

~/corpuslibros$ ./clean_docs.sh | tqdm --total $(ls -l textos.info | wc -l) --unit files

Este script crea un directorio nuevo llamada "textos.info_cleaned" con todos los archivos ya sin cabecera ni pie. El siguiente paso es juntar todos los archivos en uno:

~/corpuslibros$ cat textos.info_cleaned/* > textosinfo.txt

Y con esto ya tenemos nuestro corpus de los libros de dominio público en textosinfo.txt. Algunos datos interesantes sobre este corpus:
  • Ocupa ~400MB
  • Mas de 4000 libros en español de diferentes temáticas y estilos.
  • Contiene 73,9 Millones de palabras
  • De los cuales 525.492 son palabras únicas.

Comentarios

Entradas populares de este blog

MarIA: El primer modelo de IA masivo de la lengua española

Estos días atrás se ha hablado mucho sobre MarIA, el nuevo modelo de lenguaje en español del Barcelona Supercomputing Center : Nos gustaría recoger en este artículo, extraído de un post escrito por Carmen Torrijos en LinkedIn, algunos datos rápidos: Corpus inicial: 59TB de texto web de los archivos de la Biblioteca Nacional de España. Tiempo de procesamiento para limpiar el corpus: 6.910.000 horas. Corpus limpio sin duplicidades: 201.080.084 documentos limpios (570 GB). Número de tokens: 135.733.450.668 (dato muy NLP). Tiempo de procesamiento para entrenar el modelo: 184.000 horas de procesador y 18.000 horas de CPU. Número de parámetros de los modelos liberados: 125.000.000 y 355.000.000. Y 5 conclusiones: El corpus de texto supera en órdenes de magnitud el tamaño de los existentes hasta el momento en español. Un proyecto así es inaccesible a nivel de empresa o grupo de investigación, debido no ya al acceso al corpus sino a la capacidad de computación necesaria. Es un modelo generali

NLP en español es PLN: Recopilación de artículos introductorios y cursos de PLN en español

El Procesamiento del Lenguaje Natural, o PLN para simplificar, es una rama de la inteligencia artificial y la lingüística aplicada. A nuestro parecer un área muy interesante que conjuga humanidades con la tecnología más puntera. Para que luego digan que hay que elegir entre ciencias o humanidades. Un O exclusivo que nos han inculcado y que no puede estar tan equivocado. En este artículo recopilatorio queríamos poner nuestro granito de arena para ayudar a todos aquellos interesados en el PLN (o NLP si se prefiere aunque La Fundéu no estaría muy contenta ) pero que no están tan familiarizados con las herramientas técnicas que permiten procesar el lenguaje o cómo darle utilidad a los conocimientos tan valiosos sobre lingüística de una manera práctica. La principal diferencia de este artículo con otros es que vamos a intentar que los recursos presentados sirvan o pongan de ejemplo el procesamiento del español, segunda lengua materna más hablada en el mundo después del chino pero que tiene

Avanzando en la detección del lenguaje ofensivo en español

SHARE y OffendES_spans: dos nuevos recursos para combatir el lenguaje ofensivo textual. Durante la charla se presentarán dos recursos lingüísticos recientemente generados que serán clave para avanzar en la investigación del lenguaje ofensivo en español: SHARE y OffendES_spans.  SHARE es un recurso léxico con más de 10.000 términos y expresiones ofensivas por parte de la comunidad de hispanohablantes. Para el desarrollo de este recurso se ha utilizado Fiero, un popular chatbot desarrollado para entablar una conversación con los usuarios y recoger insultos y expresiones a través de la plataforma de mensajería de Telegram. Este vocabulario fue etiquetado manualmente por cinco anotadoras obteniendo un coeficiente kappa del 78,8%.  La generación de SHARE ha permitido liberar el primer corpus en español para el reconocimiento de entidades ofensivas, llamado OffendES_spans, cuya evaluación se ha llevado a cabo a través del desarrollo de uno de los primeros sistemas computacionales en español