Introducción al Procesamiento de Lenguaje Natural

1

Fundamentos del Procesamiento de Lenguaje Natural con Python y NLTK

2

Evolución y Técnicas del Procesamiento del Lenguaje Natural

3

Procesamiento del Lenguaje Natural con Python y NLTK

Fundamentos con NLTK

4

Procesamiento de Lenguaje Natural con Python en Google Colab

5

Expresiones Regulares en Python: Patrones de Búsqueda Avanzados

6

Tokenización de Texto con Expresiones Regulares en Python

7

Estadística para Procesamiento del Lenguaje: Riqueza Léxica y Métricas

8

Cálculo de frecuencias con NLTK y diccionarios en Python

9

Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy

10

Estadísticas de Ennegramas y Colocaciones en Textos

11

Extracción de Ngramas y Bigramas con NLTK en Python

12

Análisis de Colocaciones con NLTK y Pandas en Python

13

Visualización de Colocaciones en Textos con Pandas y Plotly

14

Identificación de Colocaciones en Textos con NLTK y PMI

15

Recursos Léxicos: Uso y Aplicación en Procesamiento del Lenguaje

16

Recursos Léxicos en Python: Vocabularios, Frecuencias y Stopwords

17

Traducción de palabras con Swadesh en procesamiento de lenguaje natural

18

Uso de WarNet para Procesamiento del Lenguaje Natural

19

Análisis de Sinsets e Hipónimos con NLTK y WordNet en Google Colab

20

Medición de Similitud Semántica con WordNet en Python

21

Extracción y Procesamiento de Texto desde Páginas Web con NLTK

22

Organización de Código en Google Colab con Funciones y Módulos

23

Funciones y Buenas Prácticas en Google Colab y Python

Perspectivas de lo que viene

24

Fundamentos del Procesamiento del Lenguaje Natural con NLTK

Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Procesamiento de Lenguaje Natural con Python en Google Colab

4/24
Recursos

¿Cómo empezar con Python para procesamiento de lenguaje natural en Google Colab?

¡Bienvenido al apasionante mundo del procesamiento del lenguaje natural con Python! Hoy, nos sumergiremos en los primeros pasos para trabajar con grandes volúmenes de texto utilizando Google Colab. Este entorno, creado por Google, nos facilita el camino al contar con librerías preinstaladas, como NLTK, para Python. Y, ¿la mejor parte? ¡No necesitas instalar nada en tu computadora!

¿Cómo iniciar con Google Colab?

Google Colab ofrece un entorno tipo Jupyter Notebook donde puedes desarrollar y ejecutar código en tiempo real. Aquí verás cómo conectarte a una instancia que soportará tus cálculos:

  1. Conexión inicial: Al importar una librería como import NLTK, el sistema se conectará y te mostrará un estado de activación con un indicador verde cuando esté listo.
  2. Accede a los recursos: Colab soporta el uso de GPUs y TPUs, lo que es útil para proyectos más complejos.
  3. Aprendizaje continuo: Se recomienda explorar más sobre Colab en cursos, como el de introducción a machine learning en Platzi.

¿Cómo importar y preparar un corpus con NLTK?

Con NLTK, puedes explorar corpus como CESS_ESP para trabajar con texto en español. Antes de procesarlos, necesitas descargarlos:

import nltk
nltk.download('cess_esp')
  • Corpus en español: Podemos descargarnos el conjunto de datos llamado CESS_ESP que contiene titulares de noticias tokenizadas en español.
  • Exploración preliminar: Conocer la estructura del corpus te permite saber cuántos titulares contiene:
from nltk.corpus import cess_esp as corpus
print(len(corpus.sents()))  # Muestra la cantidad de titulares

¿Cómo procesar datos con expresiones regulares?

Las expresiones regulares son herramientas potentes para buscar patrones de texto. En Python, se manejan mediante la librería re:

import re
  • Aplanamiento del corpus: Convertir el corpus de listas de listas a una única lista de tokens o palabras.
flatten = [w for l in corpus.sents() for w in l]
print(len(flatten))  # Calcula la longitud total de tokens
  • Visualización de estructura: Puedes observar los primeros tokens para entender la estructura del corpus procesado:
print(flatten[:20])  # Muestra los primeros 20 tokens

¿Por qué es clave entender las expresiones regulares?

Aunque no profundizaremos en ellas, es crucial entender que las expresiones regulares pueden detectar patrones complejos en texto, fundamentales para tareas de procesamiento del lenguaje natural. Si buscas profundizar, te recomendamos cursos específicos sobre este tema.

Consejos prácticos para seguir aprendiendo

  1. Explora y experimenta: Dedica tiempo a experimentar con diferentes corpus y funciones de NLTK y re.
  2. Cursos complementarios: Considera cursos de expresiones regulares y machine learning para expandir tus habilidades.
  3. Práctica constante: La clave es la práctica. Usa Google Colab como tu laboratorio personal para mejorar tus habilidades en el procesamiento de texto.

Nunca subestimes el poder de la curiosidad, sigue explorando y experimentando. ¡Tu viaje en el campo del procesamiento del lenguaje natural está apenas comenzando!

Aportes 23

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Glosario:

Corpus lingüístico
Un corpus lingüístico es un conjunto amplio y estructurado de ejemplos reales de uso de la lengua. Estos ejemplos pueden ser textos, o muestras orales.​ Un corpus lingüístico es un conjunto de textos relativamente grande, creado independientemente de sus posibles formas o usos.

Token
Un token es un conjunto de caracteres que representan texto. También podemos decir que el token es la unidad análisis de texto, así como un número es la unidad del análisis matemático. Es fácil para nosotros pensar que un token es igual a una palabra, sin embargo esto no es correcto, puesto que la “palabra” es un elemento del lenguaje que posee significado por sí misma, mientras que el token se supone es un elemento abstracto. Dependiendo de la tarea que estemos afrontando, el token puede ser alguna de las siguientes:

  • Una sola palabra, como: “jóvenes”, “nivel” o “superior”,
  • Un número, como: “1”, “0”, o “10”,
  • Un solo caracter, como: “j”, “ó” o “v”,
  • Un símbolo, como “¿”, “?” o “#”,
  • Un conjunto de caracteres, como “nivel superior” o “escuela técnica”

Tokenización
La tokenización es un paso que divide cadenas de texto más largas en piezas más pequeñas o tokens. Los trozos de texto más grandes pueden ser convertidos en oraciones, las oraciones pueden ser tokenizadas en palabras, etc. El procesamiento adicional generalmente se realiza después de que una pieza de texto ha sido apropiadamente concatenada. La tokenización también se conoce como segmentación de texto o análisis léxico. A veces la segmentación se usa para referirse al desglose de un gran trozo de texto en partes más grandes que las palabras (por ejemplo, párrafos u oraciones), mientras que la tokenización se reserva para el proceso de desglose que se produce exclusivamente en palabras.


Bibliografía:

Para trabajar con tus textos propios puedes usar

path = 'dirección/de/tu/archivo.txt'

f = open(path, 'r')
raw = f.read() # Es el archivo en texto puro. No es usable por nltk aún
tokens = nltk.word_tokenize(raw) # Primero se extraen los tokens
text = nltk.Text(tokens) # Se genera el texto a partir de los tokens

Cuando hace flatten[:20] tarda porque esta volviendo a ejecutar el ciclo for, para que no gasten recurso de mas pueden hacerlo en una celda aparte

Justamente me quede revisando la data disponible de NLTK. Incluso tiene modelos de entrenamiento. http://www.nltk.org/nltk_data/

Con NumPy es más fácil aplanar una lista sin importar la dimension de la matriz.

import numpy as np
lista = [[1,2,3],[4,5,6]]
np.concatenate(lista)
<h1>Cómo usar NLKT en Google Colab</h1>
# Importamos la biblioteca
import nltk
# Descargamos nuestra base de datos de textos
nltk.download('cess_esp')

Expresiones Regulares

  • Constituyen un lenguaje estandalizado para definir cadenas de búsqueda de texto.
  • Biblioteca de operaciones con expresiones regulares de Python re.
  • Reglas para escribir expresiones regulares.
# Importamos una biblioteca para expresiones regulares. 
import re
# Definimos un corpus en Python 
corpus = nltk.corpus.cess_esp.sents()
# Vemos de que trata este contenido
print(corpus)
# Vemos el tamaño del nuestro corpus. 
print(len(corpus))

''' Aquí vamos a concatener todas esas sublistas en una lista grande, de modo de que ya no tendremos una lista de listas, si no una sola lista donde están 
todos los titulares seguidos uno tras otro '''  
flatten = [w for l in corpus for w in l]

# Imprimimos una parte de la estructura interna 
print(flatten[:100])

Excelente muy didáctico y clara la explicación

Una alternativa en NumPy para FLATTEN

Corpus = np.array(corpus)
Flatten = Corpus.flatten()

Por el momento nada nuevo, la potencia de las list comprehension.
Y con split se tokeniza texto.
Sigo bien con el IDLE nativo de python y mi ambiente virtual.

Configurara ambiente de trabajo

  • nltk ya tiene varios corpus y corpora para trabajar 😄. Para usar una, debemos descargarla. Usaremos un corpus en español nltk.download("cess_esp"). Este corpus consiste de titulares de noticas en español.

  • Se recomienda tomar el curso de expresiones regulares 👀. Python tiene una librería de expresiones regulares llamada re. Las expresiones regulares son un lenguaje estandarizado para definir cadenas de búsqueda de texto.

    re - Regular expression operations - Python 3.9.7 documentation

  • Hay una operación llamada flatten, donde aplanamos una lista, de tal manera que no tenemos una lista de listas, si no una sola lista con una secuencia de tokens larga 👀.

La flatten se puede optimizar un poco con:

import functools
import operator
flatten = functools.reduce(operator.iconcat, corpus, [])
**Crear el Entorno Virtual** Perfeccionar ![](https://static.platzi.com/media/user_upload/image-51e16cd0-656e-45ad-a279-c5ad11fa7154.jpg)
Estos cursos los deberían hacer con Anaconta, Colab es muy academico y no se utiliza a nivel laboral.

En Numpy tenemos las funciones Ravel y Flatten para convertir un ndarray en un array de una sola dimensión. Al usar Ravel su resultado es una vista o referencia del array que esta aplanando o convirtiendo, pero si este cambia, al ser una referencia, el también se ve afectado y actualiza su contenido a diferncia de Flatten. Además es más rápido que Flatten.

https://frankgalandev.com/diferencias-entre-flatten-y-ravel-en-python/

muy buena clase, bien explicada"!

Alternativa del doble loop

Vengo del futuro 👽. Si no quieren usar el doble loop y que corra más rápido pueden usar usar ravel() de numpy:

flatten = np.concatenate(np_corpus).ravel().tolist()

import nltk #tiene gran cantidad de textos, los descargamos, TITULARES DE NOTICIAS
nltk.download(‘cess_esp’)
import re
corpus = nltk.corpus.cess_esp.sents()
print(corpus)
print(len(corpus)) #6030 palabras

#aplanar la lista (flatten) y dejar los caracteres en una lista normal, no lista de listas
flatten = [w for l in corpus for w in l]
print(len(flatten)) #192,685

print(flatten[:10])

[‘El’, ‘grupo’, ‘estatal’, ‘Electricité_de_France’, ‘-Fpa-’, ‘EDF’, ‘-Fpt-’, ‘anunció’, ‘hoy’, ‘,’]

For linux users:

mport nltk
import ssl

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context

Hola, sera que me podrían hacer el favor de ayudar? tengo varias dudas.

  1. No me queda aun muy claro la diferencia de corpus y corpora, corpora es un conjunto de textos, entonces podriamos decir que un libro podria ser una copora cierto? por ejemplo el libro de harry potter
  2. Una lista de listas visualmente es una matriz cierto?

no entendi bien que significa corpus

Muy clara la explicación

hola chicos tengo un preguta:
entre un pequeño modelo usando Spacy … el modelo lo tengo en mi laptop pero ya lo subi a la carpeta donde se guardan los notebooks de google colab … pero no puedo cargarlo para trabajar … alguien sabe como hacerlo…?

El enlace:
https://platzi.com/clases/machine-learning/
No funciona, es el que explica más en detalle, como usar colab de Google.