Crea una cuenta o inicia sesión

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

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
9 Hrs
22 Min
40 Seg

Palabras, textos y vocabularios

5/24
Recursos

Aportes 20

Preguntas 4

Ordenar por:

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

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:

  • El * indica que se puede repetir 0 ó mas veces.
  • El + indica que se puede repetir 1 ó mas veces.

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]
  • 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

    1. La función re.search() en este caso buscara token con la cadena de caracteres. “es”, en cualquier posición del token
    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']
    
    1. La función re.search() en este caso las expresiones que terminen en estos caracteres entregados por parámetros
    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']
    
    1. La función re.search() en este caso las expresiones que comienzan en estos caracteres entregados por parámetros
    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']
      

Estructura de la funcion re.search()

Esta funcion determina si el patron de búsqueda p está contenido en la cadena s

re.search(p, s)

Búsquedas en cadenas de texto con meta caracteres básicos

# 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])

Patrones de búsqueda usando el concepto de rango

Ejemplos:

  • Rango [a-z]: Determina que el carácter debe estar ubicado entra la a y la z
  • Rango [ghi]: Determina que el carácter que este en esta posición puede ser cualquier letra entre la g, h e i.
# 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])

Clausuras

<h3>Tipos:</h3>
  • El *: Esta clausura representa que se puede repetir 0 o más veces.
  • El +: Esta clausura representa que s puede repetir 1 o más veces.
# 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])

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.

Estructura de la función re.search()

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.

  • El caracter $ sirve para reemplazar cualquier caracter.
  • ^ sirve para indicar que está al inicio de la cadena de texto.
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

Comprender cómo interactúan las palabras, los textos y los vocabularios es esencial para desarrollar aplicaciones efectivas en NLP.

Les recomiendo utilizar el método .compile() de la líbreria re en python, ya que nos brinda resultados más rápidos generalmente.

Aquí un pequeño test.

Usando solo expr.match como filtro sin la expresion lambda se obtienen mejores resultados.

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.