#------------------------------------------------------------------------------# # Recuperación y análisis de texto con R # # Educación Permanente FCS # # Clase 2 # # Live coding # #------------------------------------------------------------------------------# # CLASE 2 - FUENTES DE DATOS ---- ## 1. Recuperación de documentos en imagen o pdf (OCR) ---- ## Cargamos la librería necesaria: library(readtext) ##Abro los archivos de la carpeta y visualizo cómo los carga txt <- readtext::readtext("Clase4/Material/") ##Abro un archivo .txt y visualizo cómo lo carga txt <- readtext::readtext("Clase4/Material/Mujeres_Adultos_1.txt") cat(txt$text) # imprimo en consola para visualizar el texto cargado # reviso el encoding para chequear caracteres incorrectamente leídos Encoding(txt$text) # consulto el encoding del texto Encoding(txt$text)="UTF-8" # asigno un encoding y veo si está ok cat(txt$text) # imprimo en consola para ver si se arreglo el problema Encoding(txt$text)="latin1" # asigno otro encoding y veo si está ok cat(txt$text) # imprimo en consola para ver si se arreglo el problema # Determinamos el pdf con el que trabajar pdf <- readtext("Clase4/Material/text.pdf") # Determinamos el pdf en una url con el que trabajar url <- readtext("https://www.ingenieria.unam.mx/dcsyhfi/material_didactico/Literatura_Hispanoamericana_Contemporanea/Autores_B/BENEDETTI/Poemas.pdf") #pdftools library(pdftools) # Extraemos el texto pdf_texto <- pdf_text("Clase4/Material/marcha_1973.pdf") # write.csv write.csv(pdf_texto,"Clase4/Material/pdf_texto.csv") # guardo el objeto en un archivo csv ##Reconocimiento óptico de caracteres en imagenes library(tesseract) ##Chequear los idiomas disponibles tesseract_info() # Bajar por unicamente español para entrenar tesseract_download("spa") # asignar espanol <- tesseract("spa") #Probamos: transcribopdf <- ocr("Clase4/Material/analesUruguay.pdf",engine = espanol) # devuelve vector tabla=ocr_data("Clase4/Material/analesUruguay.pdf",engine = espanol) # devuelve tibble (dataframe) # unifico el texto en un vector texto2 <- stringr::str_c(tabla$word, collapse = " ") # colapso los tres elementos del vector separando por un espacio #### EJERCICIO 1 ---- # Ejercicio 1 ## Reconocimiento óptico de caracteres # 1. Replicar el OCR para la imagen _analesUruguay3_ y __marcha_1973__ # 2. Hacer la tabla de ambas # Solucion # transcribopng <- ocr("Clase2/Material/analesUruguay_3.png",engine = espanol) # tablapng=ocr_data("Clase2/Material/analesUruguay_3.png",engine = espanol) #------------------------------------------------------------------------------# ## 2. Scraping web y parlamentario ---- #### Web scraping ---- library(rvest) library(dplyr) #Defino mi sitio html: Montevideo portal mvdportal = rvest::read_html("https://www.montevideo.com.uy/index.html") # leo todo el contenido html y guardo en un objeto resumenes = mvdportal %>% html_elements(".text") %>% #defino el elemento que identifiqué con el SelectorGadget html_text()%>% # extraigo el texto as.data.frame() # convierto la salida en un data frame #write.csv(resumenes,"Clase2/Material/resumenes.csv") titulares = mvdportal %>% html_elements("a")%>% html_text()%>% as.data.frame() #write.csv(titulares,"Material/titulares.csv") # descargo de tabla html url <- 'https://es.wikipedia.org/wiki/Anexo:Ríos_de_Uruguay' # identifico url url %>% read_html() %>% # aplico la función de leer el contenido html sin guardarla en un objeto html_elements(css = '.wikitable') %>% # selecciono un estilo css específico que es el de las tablas html_table() # función que convierte la extracción en una tabla de r ## como no asigné este código a ningún objeto, se va a imprimir en la consola #### EJERCICIO 2 ---- ## Scrapeo web con rvest # 1. Descargar noticias o información de otra web # 2. Scrapear dos elementos html diferentes #------------------------------------------------------------------------------# #### Scrapeo parlamentario ---- ##Instalar última versión dev de speech desde github ##remotes::install_github("Nicolas-Schmidt/speech") ##Instalar PUY ##remotes::install_github("Nicolas-Schmidt/puy") ##Speech - ejemplo url <- "https://parlamento.gub.uy/documentosyleyes/documentos/diarios-de-sesion/5515/IMG" sesion <- speech::speech_build(file = url) sesion <- speech::speech_build(file = url, compiler = TRUE, quality = TRUE) #Función completa sesion <- speech::speech_build(file = url, #url a pdf compiler = FALSE, #compila discursos de unx mismx legisladorx quality = TRUE, #aporta dos índices de calidad add.error.sir = c("SEf'IOR"), ##forma errónea que lo que identifica a el/la legisladorx rm.error.leg = c("PRtSIDENTE", "SUB", "PRfSlENTE")) #agrego partido político sesion <- puy::add_party(sesion) #### EJERCICIO 3 ---- # 1. Elegir una sesión parlamentaria # 2. Aplicar la funcion speech_build # 3. Agregar etiqueta partidaria # 4. Guardar en formato tabulado #------------------------------------------------------------------------------#