Introducción al Procesamiento de Lenguaje Natural
Introducción al Procesamiento de Lenguaje Natural
Evolución del NLP
Conceptos básicos de NLP
Fundamentos con NLTK
Configurar ambiente de trabajo
Palabras, textos y vocabularios
Tokenizacion con Expresiones Regulares
Estadísticas básicas del lenguaje
Distribuciónes de frecuencia de palabras
Refinamiento y visualización de cuerpos de texto
N-gramas y Colocaciones del lenguaje
¿Cómo extraer n-gramas de un texto en Python?
Colocaciones en Python
Colocaciones en gráficos de dispersión
Filtros y colocaciones en NLTK
Introducción a los recursos léxicos
Recursos léxicos en NLTK
NLTK para traducción de palabras
Introducción a WordNet
Explorando WordNet
Similitud Semantica con WordNet
Procesamiento de texto plano desde Web
Usando código estructurado: conexión de Drive a Google Colab
Usando código estructurado: Funciones externas
Perspectivas de lo que viene
Continúa con el Curso de Algoritmos de Clasificación de Texto
Crea una cuenta o inicia sesión
¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera
Aportes 18
Preguntas 4
Definicion de metacaracter: Es una subcadena de texto que define un patron de busqueda muy basico. En el ejemplo tenemos:
re.search('es')
En donde nos trae todas las cadenas de texto que contengan en alguna parte la subcadena ‘es’.
En las expresiones regulares podemos tener busquedas al inicio o al final.
Al inicio seria
re.search('es$')
Al final quedaria como:
re.search('^es')
El rango como su nombre lo indica es una expresion regular que nos da como resultado las cadenas que tengan a inicio o final lo contenido en dicho rango. Ejemplo:
re.search('^[ghi]')
Clausura:
Existen 2 tipos:
La función re.search(p, s) tiene dos parámetros. En p introducimos la expresión que queremos buscar y en s la “lista” en la que queremos buscar la expresión p.
También se puede hacer uno de un filtro así:
import nltk
from re import match
import functools
import operator
nltk.download('cess_esp')
corpus = nltk.corpus.cess_esp.sents()
flatten = functools.reduce(operator.iconcat, corpus, [])
filtered_values = list(filter(lambda w: match('^[afc]', w), flatten))
filtered_values[:10]
Esta funcion determina si el patron de búsqueda p está contenido en la cadena s
re.search(p, s)
# Buscamos el 'es' en la cadena w en donde este
arr = [w for w in flatten if re.search('es', w)]
print(arr[:5])
# Buscamos el 'es' en la cadena w al final
arr = [w for w in flatten if re.search('es$', w)]
print(arr[:5])
# Buscamos el 'es' en la cadena w al principio
arr = [w for w in flatten if re.search('^es', w)]
print(arr[:5])
Ejemplos:
# Buscamos que al principio de tu cadena de texto debe de ser entre la g, h y la i
arr = [w for w in flatten if re.search('^[ghi]', w)]
print(arr[:10])
# El patron de busqueda será que al principio aparezca no y que esa secuencia se puede repetir 0 o más veces
arr1 = [w for w in flatten if re.search('^(no)*', w)]
print(arr1[:20])
# El patron de busqueda será que la sub cadena de texto no debe de aparecer al menos una vez
arr2 = [w for w in flatten if re.search('^(no)+', w)]
print(arr2[:20])
Que es ?
Esta funcion determmina el patron de busqueeda dee caracteres; p es la cadena a buscar y s es el arreglo de donde se sacara la informacion
re.search(p,s)
Estructura
arr = [w for w in flatten if re.search("es", w)]
print(arr[:10])
entrega
['estatal', 'jueves', 'empresa', 'centrales', 'francesa', 'japonesa', 'millones', 'millones', 'dólares', 'millones']
arr = [w for w in flatten if re.search("es$", w)]
print(arr[:10])
entrega
['jueves', 'centrales', 'millones', 'millones', 'dólares', 'millones', 'millones', 'dólares', 'es', 'militantes']
arr = [w for w in flatten if re.search("^es", w)]
print(arr[:10])
entrega
['estatal', 'es', 'esta', 'esta', 'eso', 'es', 'especial', 'especialmente', 'este', 'estas']
Rango
Con el rango podemos hacer un filtrado mayor, dato que tenemos varios caracteres en los que podemos buscar, el rango se escribe dentro de [ ]
arr = [w for w in flatten if re.search("^[ghi]", w)]
print(arr[:10])
entrega
['grupo', 'hoy', 'gas', 'gas', 'intervendrá', 'invertir', 'gas', 'hoy', 'insulto', 'intervención']
Clausuras
Las clausuras nos ayudaran a delimitar la búsqueda por caracteres
*** repetirr 0 o mas veces**
+ repetir 1 o mas veces
con 0 repeticiones
arr = [w for w in flatten if re.search("^(no)*", w)]
print(arr[:1
entrega
['El', 'grupo', 'estatal', 'Electricité_de_France', '-Fpa-', 'EDF', '-Fpt-', 'anunció', 'hoy', ',']
con 1 o mas repeticiones
arr = [w for w in flatten if re.search("^(no)+", w)]
print(arr[:10])
entrega
['norte', 'no', 'no', 'noche', 'no', 'no', 'notificación', 'no', 'no', 'no']
No entiendo porque Francisco dice “0 o mas veces”. Si es cero no hay mas veces.
Alguien tiene una explicación de porque utiliza esa expresión.
Gracias
Este curso me gusta mucho es sobre python.
https://www.sololearn.com/learning/1073
Es FREE, en el ahi un modulo que es sobre expresiones regulares. Se los recomiendo.
Esta función determina si el patrón de la expresión regular aplica en una cadena de texto, re.searhc(p, s)
arr = [word for word in flatten if re.search('es',word)]
print(arr[:7])
Podemos ver que todos los elementos tienen dentro el texto es.🤯 Este es es un metacaracter que define un patrón de búsqueda muy básico. Podemos crear patrónes de busqueda mucho más complejos.
arr = [word for word in flatten if re.search('es$', word)]
print(arr[:5])
arr = [word for word in flatten if re.search('^es', word)]
print(arr[:5])
Ahora veremos que es el rango. La notación es [a-z], [ghi]. Cualquier letra en ese rango puede estar en dicho lugar
arr = [word for word in flatten if re.search('^[ghi]', word)]
print(arr[:7])
Por último, tenemos clausuras, y hay dos tipos:
*
: Una cadena de texto se puede repetir 0 o más veces.+
: La cadena se puede repetir 1 o más veces.arr = [word for word in flatten if re.search('^(no)+', word)]
print(arr[:10])
Muy buena clase, si puedes tomar el curso de expresiones regulares del profesor Beco estos dos cursos seran una combinación potente en tu stack
print([re.findall(r'\w*es', line) for line in flatten if re.search(r'es$', line)][:5])
print([re.findall(r'\w*es$', line) for line in flatten][:208])
Me pareció raro el código del profe porque pidas el patrón que pidas siempre te da la palabra entera que contiene la cadena, pero con este código puedes comprender el patrón que pides y lo que se está mostrando en pantalla, que es otro patrón.
La segunda función print() te ayudará a comprender el comportamiento del objeto flatten que es un iterador. Además puedes intercambiar entre: search, findall indistintamente así como los slices. Y por supuesto que los patrones y verás su comportamiento y naturaleza.
Ya me voy dando idea para trabajar con mi propia fuente y crear base de datos con el arreglo
Clausuras en expresiones regulares
Hola:
Pueden poner los patrones de texto para insertarlos en Google Colab y así poder practicar sin tener que escribirlos?. Me da un error cuando escribo las instrucciones
En algún momento encontré este simulador y me ayudó en el curso de Expresiones Regulares.
Buena explicación de expresiones regulares, lo básico, pero necesario para poder entenderlas.
Recordando el curso Autómatas y Lenguajes Formales.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.