Ir al contenido principal

[NPL][Ejercicio 1]: Expresiones Regulares

  Escribe expresiones regulares para los siguientes lenguajes:

  1. el conjunto de todas las cadenas alfabéticas;
  2. el conjunto de todas las cadenas alfabéticas en minúscula que terminan en una b;
  3. el conjunto de todas las cadenas del alfabeto a,b tal que cada a está inmediatamente precedida y seguida por una b.

Solución:

  1. [A-Za-z]+
  2. [a-z]*b
  3. *b(ab)*

 Escribir expresiones regulares para los siguientes lenguajes:

  1. el conjunto de todas las cadenas que tienen dos palabras consecutivas repetidas (por ejemplo, “Humbert Humbert” y “the the”, pero no “the bug” o “the big bug”);
  2. todas las cadenas que comienzan al principio de la línea con un número entero y que terminan al final de la línea con una palabra;
  3. todas las cadenas que tienen tanto la palabra “grotto” como la palabra “raven” en ellas (pero no, por ejemplo, palabras como “grottos” que simplemente contienen la palabra “grotto”);
  4. escribir un patrón que coloque la primera palabra de una oración en inglés en un registro. Tratar con la puntuación.

Solución:

  1. (\b\w+\b)\s+\1
    1. Explicación:
      1. (: Inicio del grupo de captura.
      2. \b: Coincide con el límite de una palabra.
      3. \w+: Coincide con uno o más caracteres alfanuméricos.
      4. \b: Coincide con el límite de una palabra.
      5. ): Fin del grupo de captura.
      6. \s+: Coincide con uno o más espacios en blanco.
      7. \1: Coincide con el mismo texto que se encuentra en el primer grupo de captura.
  2. ^\d+\s.*\b(\w+)$
    1. Explicación:
      1. ^: Coincide con el inicio de la línea.
      2. \d+: Coincide con uno o más dígitos.
      3. \s: Coincide con un espacio en blanco.
      4. .*: Coincide con cualquier carácter cero o más veces.
      5. \b: Coincide con el límite de una palabra.
      6. (\w+): Coincide con una o más letras, números o guiones bajos. Este es el grupo de captura que se utilizará para extraer la palabra al final de la cadena de texto.
      7. $: Coincide con el final de la línea.
  3. \b(?=\wgrotto)(?=\wraven)\w+
    1. Explicación:
      1. \b: Coincide con el límite de una palabra.
      2. (?=\wgrotto): Es una búsqueda positiva hacia adelante que coincide con cualquier palabra que comience con “grotto”.
      3. (?=\wraven): Es otra búsqueda positiva hacia adelante que coincide con cualquier palabra que comience con “raven”.
      4. \w+: Coincide con una o más letras, números o guiones bajos. Este es el grupo de captura que se  utilizará para extraer la palabra que contiene tanto “grotto” como “raven”.
  4. ([A-Za-z]+)[A-Za-z]*
    1. Explicación:
      1. (: Inicio del grupo de captura.
      2. [A-Za-z]+: Coincide con una o más letras mayúsculas o minúsculas.
      3. ): Fin del grupo de captura.
      4. [A-Za-z]*: Coincide con cero o más letras mayúsculas o minúsculas. Este es el grupo de captura que se utilizará para capturar los caracteres adicionales después de la primera palabra.
      5. $: Coincide con el final de la línea.

Comentarios

Entradas populares de este blog

[DATA SCIENCE] [R PROGRAMMING] [DATA VISUALIZATION] Explorando Técnicas de Análisis y Visualización de Datos en R

  Introducción En el análisis de datos, la correcta partición y visualización de los datasets es crucial para obtener conclusiones precisas y valiosas. En este artículo, exploraremos diversas técnicas en R para particionar datasets, crear histogramas, scatterplots, boxplots, y ajustar curvas de regresión y suavizado. 1. Partición de Datasets La partición de datasets es una etapa fundamental en el proceso de machine learning. Permite dividir los datos en conjuntos de entrenamiento, validación y prueba para asegurar que nuestros modelos se entrenen y evalúen adecuadamente. Función para Particionar Datasets # Función para automatizar la partición de datasets partition_data <- function(data, target_column, train_ratio = 0.7, validate_ratio = NULL, seed = 123) {   # Establecer la semilla para reproducibilidad   set.seed(seed)      # Crear partición de entrenamiento   training_ids <- createDataPartition(data[[target_column]], p = train_ratio, list = FA...

[DATA SCIENCE] Guion de formación en matemáticas y R sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales y diagramas ROC.

Guion de Formación en Matemáticas y R Guion de Formación en Matemáticas y R Este guion está diseñado para aprender y consolidar conocimientos sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales (PCA) y diagramas ROC utilizando la plataforma R. 1. Matrices de Confusión Teoría Matemática: Definición: Una matriz de confusión evalúa el rendimiento de un modelo de clasificación. Consiste en una tabla que compara las predicciones del modelo con los valores reales. Componentes: Verdaderos Positivos (TP) Falsos Positivos (FP) Verdaderos Negativos (TN) Falsos Negativos (FN) Métricas derivadas: Precisión: Precision = TP / (TP + FP) Sensibilidad: Recall = TP / (TP + FN) Especificidad: Specificity = TN /...

[Machine Learning][Python][Clasificación] Understanding Support Vector Machines with Python

Support Vector Machines con Python Support Vector Machines con Python Support Vector Machines (SVM) son algoritmos de aprendizaje supervisado muy potentes, a menudo utilizados para problemas de clasificación. Este artículo demuestra cómo utilizar SVM en Python con la biblioteca scikit-learn y proporciona una explicación de la teoría subyacente. 1. Implementación en Python Código en Python: import numpy as np # Biblioteca para trabajar con arreglos y operaciones matemáticas import matplotlib.pyplot as plt # Biblioteca para crear gráficos y visualizaciones from sklearn import datasets # Módulo para cargar y manejar conjuntos de datos estándar from sklearn.model_selection import train_test_split # Función para dividir los datos en entrenamiento y prueba from sklearn.svm import SVC # Clase para implementar Support Vector Machines # 1. Cargar datos # Usaremos el dataset de iris, seleccionando solo dos clases para sim...