Introducción

En esta sesión realizaremos ejemplos básicos de manejo de texto con la libreria Stringr de R.

# Leemos el script de setup 
source("https://raw.githubusercontent.com/JuveCampos/miniProyectos/master/SeminarioStringR2/Scripts/setup.R")

# Invocamos a las librerias
library(stringr)
library(tidyverse)

Ejemplo 1. Sobre como usar stringr para limpiar bases de textos.

Para este ejemplo, vamos a utilizar stringr para limpiar typos generados por utilizar encodings incorrectos.

Paso 1. Exploramos la base.

View(mapa)
plot(mapa, max.plot = 1) # Ploteamos la primer variable del mapa 

head(mapa[,1:4], 3) # Primeras observaciones del mapa
## Simple feature collection with 3 features and 4 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: -99.21994 ymin: 19.38442 xmax: -99.14706 ymax: 19.53606
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
##                            NOMBRE                      NOM_OFICIA
## 1       REPRESA RÃ\u008dO BECERRA       REPRESA RÃ\u008dO BECERRA
## 2 LAGUNA DE REGULACIÓN CUAUTEPEC LAGUNA DE REGULACIÓN CUAUTEPEC
## 3                       BARRILACO                       BARRILACO
##                                                   RESPONSABL
## 1 Sistema de Aguas de la Ciudad de México (Gobierno del DF)
## 2                                  Gobieno del Estado (SACM)
## 3 Sistema de Aguas de la Ciudad de México (Gobierno del DF)
##              ESTADO                   geometry
## 1 Ciudad de México POINT (-99.19211 19.38442)
## 2 Ciudad de México POINT (-99.14706 19.53606)
## 3 Ciudad de México   POINT (-99.21994 19.419)
class(mapa$NOMBRE) # Vemos si la variable es texto o factor 
## [1] "factor"

Podemos ver que la letra Í fué cambiada por Ã08d, la letra Ó fué cambiada por un _Ó_ y la letra é fué cambiada por un é. Como esto puede ser molesto a la hora de elaborar mapas, vamos a sustituir estas letras utilizando expresiones regulares simples y la función str_replace().

# Trabajando con la variable NOMBRE

# 1. Checar que nuestra expresion regular capte lo que queremos que capte
O_acento <- "Ó" 
I_acento <- "Ã"
e_acento <- "é"
str_view(as.character(mapa$NOMBRE), pattern = O_acento, match = T)
# 2. Corregimos el error
mapa$NOMBRE <- str_replace_all(string = mapa$NOMBRE, pattern = O_acento, replacement = "Ó") %>% 
  str_replace_all(pattern = I_acento, replacement = "Í") %>% 
  str_remove_all(pattern = "\u008d")

mapa$NOMBRE # Checamos si se modifico el texto de la variable 
##  [1] "REPRESA RÍO BECERRA"                     
##  [2] "LAGUNA DE REGULACIÓN CUAUTEPEC"          
##  [3] "BARRILACO"                               
##  [4] "DOLORES"                                 
##  [5] "RUIZ CORTINES"                           
##  [6] "TACUBAYA"                                
##  [7] "BECERRA \"C\""                           
##  [8] "BECERRA \"B\""                           
##  [9] "BECERRA \"A\""                           
## [10] "REPRESA RÍO BECERRA"                     
## [11] "MIXCOAC"                                 
## [12] "TARANGO"                                 
## [13] "PILARES"                                 
## [14] "ATLAMAYA"                                
## [15] "LAS FLORES"                              
## [16] "LA MINA"                                 
## [17] "TEQUILASCO"                              
## [18] "TEXCALATLACO"                            
## [19] "COYOTES"                                 
## [20] "LA ROTA"                                 
## [21] "ANZALDO"                                 
## [22] "LA MAGDALENA"                            
## [23] "SAN LUCAS"                               
## [24] "LAGUNA DE REGULACIÓN SAN LORENZO TEZONCO"
## [25] "LAGUNA DE REGULACIÓN CIENEGA CHICA"      
## [26] "LAGUNA DE REGULACIÓN CIENEGA GRANDE"

Y ya está, ya podemos hacer mapas bonitos con esta capa:

Ejemplo 2. Sobre como usar stringr para convertir fechas a texto.

Ahora, utilizaremos los tweets de Andres Manuel para ejemplificar como convertir texto a fechas. La base inicia el 25 de marzo de 2018.

# Exploramos la base...
head(tweets_amlo)  # Primeras observaciones
## # A tibble: 6 x 2
##   text                                                      date           
##   <chr>                                                     <chr>          
## 1 Reinstalación del Sistema Nacional de Búsqueda, desde Pa… "9 h\nHace 9 h…
## 2 Inauguración del estadio de béisbol 'Alfredo Harp Helú',… 24 mar.        
## 3 Programa de mejoramiento urbano, desde Acapulco, Guerrer… 23 mar.        
## 4 Clausura de la 82 Convención Bancaria, desde Acapulco, G… 22 mar.        
## 5 Ya empezamos a escribir el prólogo de la gran obra de tr… 22 mar.        
## 6 Aniversario 213 del Natalicio de Benito Juárez, desde Gu… 21 mar.
names(tweets_amlo) # Nombres de las variables
## [1] "text" "date"
tweets_amlo$date[1:20] # Ejemplo de los registros
##  [1] "9 h\nHace 9 horas" "24 mar."           "23 mar."          
##  [4] "22 mar."           "22 mar."           "21 mar."          
##  [7] "21 mar."           "20 mar."           "20 mar."          
## [10] "19 mar."           "18 mar."           "18 mar."          
## [13] "17 mar."           "15 mar."           "14 mar."          
## [16] "14 mar."           "13 mar."           "12 mar."          
## [19] "12 mar."           "12 mar."
# 1. Detectamos los tweets de hoy! 
patron_hoy <- 'Hace'
str_view(string = tweets_amlo$date, pattern = patron_hoy, match = T)
str_detect(string = tweets_amlo$date, pattern = patron_hoy)
##   [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [67] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [78] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [89] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [100] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [111] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [122] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [144] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [155] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [166] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [177] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [188] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [199] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [210] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [221] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [232] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [243] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [254] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [265] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [276] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [287] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [298] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [309] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [320] FALSE
# Donde el match es TRUE, cambiamos la fecha al formato deseado.
tweets_amlo$date[str_detect(string = tweets_amlo$date, pattern = patron_hoy)] <- "25-03-2019"

# 2. detectamos los tweets de 2019
pp <- or1(c(START %R% capture(one_or_more(DGT)) %R% SPC, SPC %R% capture(one_or_more(DGT)) %R% END))
levels(as.factor(str_remove_all(tweets_amlo$date, pattern = pp)))
## [1] "25-03-2019" "dic."       "ene."       "feb."       "mar."      
## [6] "nov."       "oct."       "sept."
# Generamos un vector de meses para hacer un reemplazo mas estricto
meses <- c("ene." = "01",
           "feb." = "02",
           "mar." = "03",
           "abr." = "04",
           "may." = "05",
           "jun." = "06",
           "jul." = "07",
           "ago." = "08",
           "sept." = "09",
           "oct." = "10",
           "nov." = "11",
           "dic." = "12"
           ) 

# Reemplazamos todo por su reemplazo...
str_replace_all(string = tweets_amlo$date, pattern = meses, replacement = meses)
##   [1] "25-03-2019" "24 03"      "23 03"      "22 03"      "22 03"     
##   [6] "21 03"      "21 03"      "20 03"      "20 03"      "19 03"     
##  [11] "18 03"      "18 03"      "17 03"      "15 03"      "14 03"     
##  [16] "14 03"      "13 03"      "12 03"      "12 03"      "12 03"     
##  [21] "11 03"      "11 03"      "10 03"      "10 03"      "9 03"      
##  [26] "8 03"       "8 03"       "7 03"       "7 03"       "7 03"      
##  [31] "6 03"       "5 03"       "5 03"       "4 03"       "3 03"      
##  [36] "3 03"       "2 03"       "1 03"       "28 02"      "27 02"     
##  [41] "26 02"      "26 02"      "26 02"      "25 02"      "24 02"     
##  [46] "24 02"      "24 02"      "23 02"      "22 02"      "22 02"     
##  [51] "22 02"      "22 02"      "21 02"      "21 02"      "21 02"     
##  [56] "20 02"      "20 02"      "19 02"      "19 02"      "18 02"     
##  [61] "18 02"      "18 02"      "17 02"      "17 02"      "16 02"     
##  [66] "16 02"      "15 02"      "14 02"      "14 02"      "13 02"     
##  [71] "13 02"      "12 02"      "12 02"      "11 02"      "10 02"     
##  [76] "10 02"      "10 02"      "9 02"       "9 02"       "9 02"      
##  [81] "8 02"       "8 02"       "8 02"       "7 02"       "7 02"      
##  [86] "7 02"       "6 02"       "5 02"       "5 02"       "4 02"      
##  [91] "3 02"       "3 02"       "2 02"       "2 02"       "2 02"      
##  [96] "1 02"       "1 02"       "31 01"      "31 01"      "31 01"     
## [101] "30 01"      "30 01"      "29 01"      "29 01"      "28 01"     
## [106] "28 01"      "27 01"      "27 01"      "26 01"      "26 01"     
## [111] "25 01"      "25 01"      "25 01"      "24 01"      "23 01"     
## [116] "22 01"      "22 01"      "22 01"      "22 01"      "21 01"     
## [121] "21 01"      "21 01"      "20 01"      "19 01"      "19 01"     
## [126] "19 01"      "19 01"      "18 01"      "18 01"      "17 01"     
## [131] "17 01"      "16 01"      "15 01"      "15 01"      "14 01"     
## [136] "13 01"      "12 01"      "12 01"      "12 01"      "11 01"     
## [141] "11 01"      "10 01"      "10 01"      "10 01"      "9 01"      
## [146] "9 01"       "8 01"       "7 01"       "7 01"       "6 01"      
## [151] "5 01"       "5 01"       "4 01"       "4 01"       "3 01"      
## [156] "3 01"       "2 01"       "1 01"       "31 12 2018" "30 12 2018"
## [161] "29 12 2018" "28 12 2018" "28 12 2018" "27 12 2018" "27 12 2018"
## [166] "26 12 2018" "24 12 2018" "24 12 2018" "24 12 2018" "23 12 2018"
## [171] "22 12 2018" "22 12 2018" "22 12 2018" "21 12 2018" "21 12 2018"
## [176] "20 12 2018" "19 12 2018" "19 12 2018" "19 12 2018" "18 12 2018"
## [181] "18 12 2018" "18 12 2018" "17 12 2018" "17 12 2018" "16 12 2018"
## [186] "16 12 2018" "15 12 2018" "15 12 2018" "14 12 2018" "14 12 2018"
## [191] "13 12 2018" "12 12 2018" "12 12 2018" "11 12 2018" "11 12 2018"
## [196] "10 12 2018" "10 12 2018" "9 12 2018"  "8 12 2018"  "8 12 2018" 
## [201] "7 12 2018"  "6 12 2018"  "5 12 2018"  "5 12 2018"  "4 12 2018" 
## [206] "3 12 2018"  "3 12 2018"  "2 12 2018"  "2 12 2018"  "1 12 2018" 
## [211] "1 12 2018"  "1 12 2018"  "1 12 2018"  "30 11 2018" "29 11 2018"
## [216] "28 11 2018" "27 11 2018" "26 11 2018" "26 11 2018" "25 11 2018"
## [221] "25 11 2018" "25 11 2018" "24 11 2018" "23 11 2018" "23 11 2018"
## [226] "23 11 2018" "22 11 2018" "21 11 2018" "21 11 2018" "20 11 2018"
## [231] "19 11 2018" "19 11 2018" "19 11 2018" "16 11 2018" "15 11 2018"
## [236] "15 11 2018" "15 11 2018" "14 11 2018" "14 11 2018" "13 11 2018"
## [241] "12 11 2018" "12 11 2018" "12 11 2018" "9 11 2018"  "8 11 2018" 
## [246] "8 11 2018"  "7 11 2018"  "6 11 2018"  "5 11 2018"  "5 11 2018" 
## [251] "5 11 2018"  "2 11 2018"  "2 11 2018"  "1 11 2018"  "31 10 2018"
## [256] "31 10 2018" "30 10 2018" "29 10 2018" "28 10 2018" "28 10 2018"
## [261] "27 10 2018" "26 10 2018" "25 10 2018" "24 10 2018" "24 10 2018"
## [266] "24 10 2018" "23 10 2018" "23 10 2018" "22 10 2018" "22 10 2018"
## [271] "22 10 2018" "22 10 2018" "22 10 2018" "21 10 2018" "20 10 2018"
## [276] "19 10 2018" "18 10 2018" "17 10 2018" "16 10 2018" "15 10 2018"
## [281] "14 10 2018" "13 10 2018" "12 10 2018" "11 10 2018" "10 10 2018"
## [286] "10 10 2018" "9 10 2018"  "9 10 2018"  "9 10 2018"  "9 10 2018" 
## [291] "9 10 2018"  "9 10 2018"  "9 10 2018"  "9 10 2018"  "8 10 2018" 
## [296] "7 10 2018"  "6 10 2018"  "5 10 2018"  "4 10 2018"  "3 10 2018" 
## [301] "2 10 2018"  "1 10 2018"  "30 09 2018" "29 09 2018" "29 09 2018"
## [306] "28 09 2018" "27 09 2018" "25 09 2018" "22 09 2018" "21 09 2018"
## [311] "20 09 2018" "19 09 2018" "18 09 2018" "17 09 2018" "15 09 2018"
## [316] "14 09 2018" "13 09 2018" "12 09 2018" "12 09 2018" "11 09 2018"
# Nuevos datos en fecha 
tweets_amlo$date <- str_replace_all(string = tweets_amlo$date, pattern = meses, replacement = meses)

# Detectamos los espacios en blanco y los reemplazamos con guiones
esp_bco <- "\\s"

# Vemos si cachamos lo que queremos
str_view(string = tweets_amlo$date[1:10], pattern = esp_bco)
# Lo mismo, pero con TODOS los espacios
str_view_all(string = tweets_amlo$date[1:10], pattern = esp_bco)
# Reemplazamos los espacios en blanco con guiones
tweets_amlo$date <- str_replace_all(string = tweets_amlo$date, pattern = esp_bco, replacement  = "-")

# Detectamos el tamanio de los caracteres, y le pegamos el año 2019 a los que son del 2019
str_length(tweets_amlo$date) %>% niveles()
## [1] "4"  "5"  "9"  "10"
tweets_amlo$date <- ifelse(str_length(tweets_amlo$date) < 6, paste0(tweets_amlo$date, "-2019"), tweets_amlo$date)

# Convertimos a fecha !!!!
tweets_amlo$fecha <- as.Date(tweets_amlo$date, format = "%d-%m-%Y")
class(tweets_amlo$fecha)
## [1] "Date"
# Podemos filtrar cosas
tweets_amlo_presidente <- tweets_amlo %>% 
  filter(fecha > "2018-12-01")

# Podemos hacer graficas
frecuencia <- tweets_amlo %>% 
  group_by(fecha) %>% 
  summarise(freq = n()) 

plot <- ggplot(data = frecuencia, aes(x = fecha, y = freq)) + geom_bar(stat = "identity") 
plotly::ggplotly(plot)

Ejemplo 3. Sobre como usar stringr para detectar cosas en el texto.

Vamos a explorar que tan frecuente utiliza la cuenta de AMLO ciertas palabras.

# Creamos un WordCloud Rapido
create_wordcloud(data = tweets_amlo_presidente$text)
# Detectamos cual es la prensa matutina
pat_mat <- "matutina"

# Mostramos los tweets donde aparece la palabra "matutina"
tweets_amlo_presidente$text[str_detect(tweets_amlo_presidente$text, pattern = pat_mat)]
##  [1] "Ya empezamos a escribir el prólogo de la gran obra de transformación nacional. Conferencia matutina."           
##  [2] "Se puede gobernar para el pueblo y con el pueblo. Conferencia de prensa matutina desde Palacio Nacional."       
##  [3] "Que el pueblo siempre tenga las riendas del poder en sus manos. Conferencia de prensa matutina."                
##  [4] "Seguiremos construyendo en armonía la Cuarta Transformación de la vida pública de México. Conferencia matutina."
##  [5] "Convertiremos a México en una potencia económica con dimensión social. Conferencia matutina."                   
##  [6] "No fue casual que, durante mucho tiempo, la corrupción no se considerara delito grave. Conferencia matutina."   
##  [7] "Promovemos el diálogo abierto y circular. Conferencia de prensa matutina."                                      
##  [8] "Ya están disponibles en Spotify nuestras conferencias de prensa matutinas."                                     
##  [9] "Conferencia de prensa matutina desde Palacio Nacional."                                                         
## [10] "La transparencia es la regla de oro de la democracia. Conferencia de prensa matutina."                          
## [11] "La información es democracia. Conferencia de prensa matutina desde Palacio Nacional."                           
## [12] "Queremos la modernidad, pero forjada desde abajo y para todos. Conferencia de prensa matutina."                 
## [13] "La ciudadanía tendrá la última palabra. Conferencia matutina en vivo."                                          
## [14] "Conferencia de prensa matutina, desde Monterrey, Nuevo León."                                                   
## [15] "El funcionario debe aprender a vivir en la justa medianía. Conferencia matutina en vivo."                       
## [16] "El poder solo tiene sentido cuando se pone al servicio de los demás. Conferencia matutina en vivo."             
## [17] "La educación no es un privilegio, es un derecho. Conferencia de prensa matutina."                               
## [18] NA                                                                                                               
## [19] "Gobernamos con entrega total a la causa pública. Conferencia matutina desde Palacio Nacional."                  
## [20] "Diálogo circular con representantes de los medios de comunicación. Conferencia matutina en vivo."               
## [21] "Conferencia matutina en vivo desde Palacio Nacional."                                                           
## [22] "Conferencia de prensa matutina desde Palacio Nacional."                                                         
## [23] "Conferencia de prensa matutina en vivo desde Palacio Nacional."                                                 
## [24] "Seguimos respondiendo las preguntas de los medios de comunicación. Conferencia matutina en vivo."               
## [25] "La prensa se regula con la prensa. Conferencia matutina desde Palacio Nacional."                                
## [26] "Continuamos este ejercicio de libertad de expresión. Conferencia matutina en vivo."                             
## [27] "Ayúdennos a limpiar a México. Conferencia de prensa matutina desde Palacio Nacional."                           
## [28] "Estamos haciendo valer el derecho a la información. Conferencia matutina en vivo."                              
## [29] "Contra la corrupción, ni un paso atrás. Conferencia matutina en vivo."                                          
## [30] "Si se informa con objetividad y profesionalismo se evita el rumor tendencioso. Conferencia matutina"            
## [31] "El cambio es un hecho. Conferencia de prensa matutina desde Palacio Nacional"                                   
## [32] "Cero corrupción, cero impunidad. Conferencia de prensa matutina desde Palacio Nacional."                        
## [33] "La verdad nos hará libres. Conferencia matutina desde Palacio Nacional"                                         
## [34] "Cuentas claras y chocolate espeso. Conferencia de prensa matutina"                                              
## [35] "La transformación va. Conferencia de prensa matutina"                                                           
## [36] "La verdad siempre se abre paso. Conferencia matutina desde Palacio Nacional"                                    
## [37] "Información es poder público. Conferencia de prensa matutina"                                                   
## [38] "Conferencia matutina en vivo"                                                                                   
## [39] "Conferencia matutina en vivo"                                                                                   
## [40] "Conferencia matutina en vivo"                                                                                   
## [41] "Conferencia de prensa matutina"                                                                                 
## [42] "Conferencia de prensa matutina desde Palacio Nacional"                                                          
## [43] "Primera conferencia de prensa matutina desde Palacio Nacional"

Como podemos ver, la palabra matutina nos lleva a resultados donde el presidente anuncia sus conferencias matutinas. Vamos a eliminar estos tramos de los tweets para obtener información mas puntual acerca de lo que dice el presidente mediante una regex simple.

# Ejemplo 1
pat_conferencia <- "Conferencia matutina en vivo.|Conferencia matutina desde Palacio Nacional|Conferencia de prensa matutina"
# ... y asi hacerle con todos... 

# Ejemplo 2 - Mas general!
# pat_conferencia2 <-  optional("." %R% SPC) %R% "Conferencia" %R% SPC %R% capture(one_or_more(WRD %R% optional(",") %R%  SPC)) %R% optional(".") %R% END

capture(one_or_more(WRD))
## <regex> ([\w]+)
# pasos de generacion 
#1. Capturamos conferencia: "Conferencia"
#2. Con espacio posterior: "Conferencia\\s"
#3. Capturando una o mas palabras seguidas de un espacio "([\\w])+"  "([\\w[,]?\\s]+)", quedando Conferencia\\s([\\w\\s]+)
#4. Capturando puntos opcionales al final, con [.]?, quedando Conferencia\\s([\\w[,]?\\s]+)[.]?
#5. Capturando el final de la oracion, con $, quedando Conferencia\\s([\\w\\s]+)[.]?$
#6. Capturando al inicio que empiece opcionalmente con punto o con espacio, con [.\\s]?, quedando [.\\s]?Conferencia\\s([\\w\\s]+)[.]?$
#7. Capturando ese ultimo caso volando, con una comma opcional con [,]?, quedando finalmente: "[.\\s]?Conferencia\\s([\\w[,]?\\s]+)[.]?$"

# Patron final para capturar conferencia y texto posterior...
pat_conferencia2 <- "[.\\s]?Conferencia\\s([\\w[,]?\\s]+)[.]?$"

# La probamos
str_view_all(tweets_amlo_presidente$text[str_detect(tweets_amlo_presidente$text, pattern = pat_mat)], 
             pattern = pat_conferencia2)
# La usamos para eliminar cosas, y generamos una nueva variable de texto limpia
tweets_amlo_presidente$text <- str_remove_all(string = tweets_amlo_presidente$text, 
                                              pattern = pat_conferencia2)  

# La visualizamos
tweets_amlo_presidente$text[1:20]
##  [1] "Reinstalación del Sistema Nacional de Búsqueda, desde Palacio Nacional."                                                                                     
##  [2] "Inauguración del estadio de béisbol 'Alfredo Harp Helú', desde Ciudad de México."                                                                            
##  [3] "Programa de mejoramiento urbano, desde Acapulco, Guerrero."                                                                                                  
##  [4] "Clausura de la 82 Convención Bancaria, desde Acapulco, Guerrero."                                                                                            
##  [5] "Ya empezamos a escribir el prólogo de la gran obra de transformación nacional."                                                                              
##  [6] "Aniversario 213 del Natalicio de Benito Juárez, desde Guelatao, Oaxaca."                                                                                     
##  [7] "Se puede gobernar para el pueblo y con el pueblo."                                                                                                           
##  [8] "Inicio de Colecta Nacional Cruz Roja Mexicana 2019, desde Palacio Nacional."                                                                                 
##  [9] "El gobierno sabrá estar a la altura de las circunstancias."                                                                                                  
## [10] "Que el pueblo siempre tenga las riendas del poder en sus manos."                                                                                             
## [11] "Aniversario 81º de la Expropiación Petrolera, desde Tula, Hidalgo."                                                                                          
## [12] "Seguiremos construyendo en armonía la Cuarta Transformación de la vida pública de México."                                                                   
## [13] "Foro Nacional para la elaboración del Plan Nacional de Desarrollo."                                                                                          
## [14] "Convertiremos a México en una potencia económica con dimensión social."                                                                                      
## [15] "Se impulsa el hábito del debate y se fortalece la pluralidad democrática."                                                                                   
## [16] "Les comparto la entrevista con Alejandro Villalvazo e Iñaki Manero, de Grupo ACIR. http://bit.ly/2O4JOMK"                                                    
## [17] "No fue casual que, durante mucho tiempo, la corrupción no se considerara delito grave."                                                                      
## [18] "Platicamos con el presidente electo de El Salvador, Nayib Bukele, sobre la cooperación para el desarrollo como opción para atemperar el fenómeno migratorio."
## [19] "Recibí en Palacio Nacional a integrantes del Comité Judío Americano. Tratamos temas de cooperación económica y amistad entre nuestros pueblos."              
## [20] "Promovemos el diálogo abierto y circular."
# Como le harian para quitar los enlaces de https://youtu.be/MhElBSJ3meg ?? 
create_wordcloud(data = tweets_amlo_presidente$text)

Como podemos ver en la nube de palabras, ya no se menciona tanto la palabra conferencia, ni prensa, ni demás temas de comunicación.