Open jenniferisasi opened 1 year ago
Acuso recibo del borrador de la lección de parte de @jose-eduardo. Como ME voy a darle una primera vuelta para asegurarme de que el markdown y demás son correctos para que funcione la previsualización.
En los próximos días pasaré los archivos a @anisa-hawes y estarán listos para que @JoshuaGOB dé inicio a la edición y revisión de la lección.
Notas para que @JoshuaGOB tenga en cuenta:
1: All
2: CRAN packages only
3: None
4: openssl (2.0.6 -> 2.1.0) [CRAN]
5: cpp11 (0.4.4 -> 0.4.6) [CRAN]
6: purrr (1.0.1 -> 1.0.2) [CRAN]
7: fs (1.6.2 -> 1.6.3) [CRAN]
Hola @jenniferisasi,
Puedes encontrar los archivos clave aquí:
Y puedes revisar la vista previa de la lección aquí:
¡Gracias @anisa-hawes! Con esto, queda en manos de @JoshuaGOB para que inicie el proceso de edición y después de revisión por pares.
Ahora me doy cuenta de tantos errores. La "table" salió mal-- mi inexperiencia con Markdown es el culpable en este caso. Gracias!
Apologies, @jose-eduardo. I missed that, but I have fixed it now!
--
Mis disculpas, @jose-eduardo. Se me pasó, ¡pero ya lo he arreglado!
@jenniferisasi, si necesitas revisores para esta lección yo estoy disponible 👀
@anisa-hawes the R file "obtener_tokens.r" (for those using Windows) should be included in "assets" --I guess I forgot to include a link to that in the tutorial (sorry)
Dear @jose-eduardo. Apologies – I wrote myself a note to ask Jenn about this.
I've uploaded the file https://github.com/programminghistorian/ph-submissions/commit/878562a5cbaa567221fb49e6ba15b129204dc5ec and also added a link from line 457 https://github.com/programminghistorian/ph-submissions/commit/73286d50bac4be56be5d076d4a8d313d12394132. (Is this the right place for the link?)
Thank you @anisa-hawes! Yes, that is the correct placement on the link :)
Saludos @jose-eduardo,
Quiero felicitarte por esta excelente lección. Es un aportación importantísima para el estudio de literatura a gran escala. Ya terminé la primera pasada y la semana que viene debo tener las sugerencias finales. Aquí apunto los detallitos que encontré en esta versión.
¡Gracias por su ayuda, @jenniferisasi y @anisa-hawes !
Estoy utilizando los números de párrafos que se encuentran en la previsualización de la lección
[x] Añadir corchetes para marcar el código y enlaces para mantener consistencia con otras lecciones de R
> install.packages("remotes")
> remotes::install_github("xmarquez/hathiTools")
> library(hathiTools)
tidyverse, readr, readxl y stringr y, por último, necesitas tener instalado pero no cargado el paquete de plyr.
ggplot2, tmap, rnaturalearth, y sf.
#para manipular datos y archivos
>library(tidyverse)
>library(readr)
>library(readxl)
>library(stringr)
#para mapas y visualización
>library(rnaturalearth)
>library(ggplot2)
>library(tmap)
>library(sf)
Gracias por las correcciones @JoshuaGOB . Solo una pregunta, después que terminen con las correcciones, ¿cómo se procede?--¿yo hago las correcciones y les envío una copia por email? Gracias a todos
Hola @jose-eduardo,
We invite you to make the adjustments to the file, which is here: /es/borradores/originales/uso-las-colecciones-hathitrust-mineria-textual-R.md.
We don't use the Pull Request system during this Phase of the workflow, rather authors can make direct changes to their lesson. GitHub's agility for capturing successive versions of a file is a great asset to us in this Phase: Joshua will be able to review exactly what has been edited in the file's commit history.
Please ask me if you have any questions or uncertainties – I'm more than happy to help.
Made all the necessary changes. Not sure if there is anything else I need to do here.
Hola @jose-eduardo,
Thank you for your edits in response to Joshua's feedback. The next step is for @JoshuaGOB to review the revised version, then identify two peer reviewers who we will invite to respond to your lesson.
Very best wishes, Anisa
Hola @jose-eduardo Disculpa la demora y gracias por tu paciencia.
Después de incorporar estas últimas sugerencias, la lección estaría lista para las revisoras.
Desde la línea 338 a 370, considera añadir comandos para ilustrar los datos antes y después de los cambios:
[x] 359 - "Repetir el comando anterior para ver el cambio en estas filas: metadatos %>% filter(str_detect(author, "Icaza")) %>% select(author, title)"
[x] 360 - ...del nombre. Para representarlos antes de hacer los cambios:
>filtro_regex <- metadatos[c(3, 36, 77, 94), "author"]
>print(filtro_regex)
*también esta alternativa*
>print(paste("Antes de modificar:", filtro_regex))
[x] 360 - Puedes modificar los primeros tres y confirma el cambio con las siguientes expresiones:
>metadatos$author[c(3,36,94)]<-sub("\\...*", "", metadatos$author[c(3,36,94)])
>filtro_regex <- metadatos[c(3, 36, 77, 94), "author"]
>print(filtro_regex)
"considerar también"
>print(paste("Después de modificar:", filtro_regex))
>metadatos$author[77]<-sub("\\s+[^ ]+$", "", metadatos$author[77])
>filtro_regex <- metadatos[c(3, 36, 77, 94), "author"]
>print(filtro_regex)
"considerar también:"
print(paste("Segunda modificación:", filtro_regex))
- [x] 557 - Parece que hay un corchete demás después de la barra vertical:
ciudades_encontradas<-ciudades_encontradas |> group_by(GRUPO, prov) | > mutate(num_por_prov = sum(ocurrencias_por_50_mil))
Tan pronto estés listo, presentamos a las revisoras. Es una excelente lección y me encantó aprender tanto de R como de HathiTrust.
Ya está todo. He añadido además unos consejos en la última sección para los usuarios que estén trabajando con cientos y cientos de datos y el Rstudio no tenga la capacidad para manejar eso.
¡Súper, @jose-eduardo! Gracias por hacer los cambios sugeridos por @JoshuaGOB.
@JoshuaGOB, me dices si te puedo echar una mano en algo - solo estoy pasando por todos los tickets para estar al día.
Saludos, @jose-eduardo Revisé los cambios y los consejos en la última sección me parecen perfectos.
La revisión de la lección está en las excelentes manos de @jenniferisasi y @rivaquiroga. Tan pronto tengamos sus sugerencias, la lección puede pasar al próximo paso.
¡Hola, @JoshuaGOB! Para la revisión seguimos ese orden? Es decir, primero @jenniferisasi hace su revisión y luego yo?
Hola, @rivaquiroga: ¿Prefieres empezar tú? Entiendo que @jenniferisasi prefiere hacer su revisión un poco más tarde.
¡Hola! Podría hacer mi revisión después del 12 de diciembre (tengo que entregar mi tesis ese día 😬)
¡Hola! Vamos a ver si yo puedo hacer mi revisión antes de esa fecha entonces. @rivaquiroga, nos tendrás que contar de tu tesis :)
Estimados. Doy comienzo a mi revisión. Trataré de hacerlo de una pero si ven que faltan cosas, seguiré con ello pronto:
babel.hathitrust.org
y http://hdl.handle.net/2027/uc1.31175010656638
redirecciona a https://babel.hathitrust.org/cgi/pt?id=uc1.31175010656638&seq=9
; ahora el ID del libro es lo que está entre el =
y &
tibble
no tiene que coincidir con el número de pagina impreso en los libros; pues se trata de la página de escaneado, ¿verdad? Me ha costado un poco comprobarlo.Hago pausa en la sección de analizar colecciones pero sigo pronto.
No sé si debo explicar ahora o esperar a que Jennifer termine su revisión (?).
Puedo aclarar por el momento que http://hdl.handle.net/2027/ es la dirección oficial para buscar los libros por ID. Sí, te redirige a "babel... etc...", pero si en el futuro Hathitrust decidiera cambiar de "babel" a otro sitio, te redirigiría al nuevo. (Véase para esto la lección https://programminghistorian.org/en/lessons/text-mining-with-extracted-features)
Hola @jose-eduardo. Disculpa la demora en responder - me desconecté lo más posible del trabajo durante las vacaciones.
Puedes esperar a que demos todas nuestras revisiones antes de hacer ningún cambio, para evitar darle demasiadas vueltas al texto/archivo. Como seguí las instrucciones de la lección para nuestro experimento en MLA, espero terminar de revisar y dejar mis comentarios aquí mañana mismo, viernes 12 de enero.
Listo. Perdón por el nuevo retraso.
Verifiqué dos veces que del párrafo 25 en adelante todo funciona y sí. Puede que @rivaquiroga, que enseña R de forma regular, tenga sugerencias extra.
Probé el código como uno de los 3 métodos que @JoshuaGOB y yo probamos para MLA. Este resultó el menos "limpio", por así decirlo, porque - cómo bien apuntas en las notas finales - al buscar lugares por token, se pierde el contexto y no se puede verificar si el lugar está en, no sé, México o Venezuela. Tampoco hicimos el mapa porque las novelas eran de muchos países, pero aquí funciona de maravilla por ser el tema estudiado la novela de Ecuador.
@rivaquiroga y @JoshuaGOB queda en vuestras manos :)
¡Hola! A fines de la próxima semana envío mi revisión 🤓
¡Hola, @jose-eduardo!
Muchas gracias por tu lección. Conocía hathiTrust, pero nunca había explorado con detalle como ahora sus funcionalidades. Quedé muy entusiasmada y con muchas ideas ✨. La lección permite hacerse una idea general de cómo funciona y de su potencial para hacer análisis exploratorios.
A continuación hay algunas sugerencias que se me han ocurrido luego de leer la lección y realizar los ejercicios propuestos. Primero hay un comentario general sobre el formato del código y luego comentarios más detallados por sección o párrafo. Como solo los párrafos de texto tienen número, a los de código hice referencia indicando el número del párrafo anterior.
>
antes de cada línea de código. Al copiar y pegar el código de la lección en mi sesión de R muchas veces se me pasaron esos signos porque están pegados al primer elemento del bloque de código. El estilo código en markdown es suficiente para saber que no es texto. Si tienes todo el código en un script, la manera más rápida de resolver eso es con el paquete styler, que puede formatear todo el código de un archivo. No solo va a agregar los saltos de línea necesarios después de cada pipe, sino que también va a agregar espacios entre elementos del código (por ejemplo, antes y después de <-
).
library(tidyverse)
. Esa línea carga dplyr, ggplot2, tidyr, readr, purrr, tibble, stringr, forcats y lubridate. Para algunos de esos paquetes se agrega luego una línea de código para cargarlos de forma explícita. El único que no aparece y que habría que agregar luego de eliminar la llamada al tidyverse es dplyr. install.packages()
. Quizás @jenniferisasi como Managing Editor tenga una opinión respecto de cuál de las dos opciones sería mejor en términos de la sostenibilidad de la lección.ggplot(tokens_maria, aes(page, num_tokens)) +
geom_line(color = "blue") +
labs(x = "páginas", y = "tamaño") +
theme_classic()
Y luego con la línes roja para los capítulos:
ggplot(tokens_maria, aes(page, num_tokens)) +
geom_line(color = "blue") +
geom_vline(xintercept = capitulos$page, color = "red") +
labs(x = "páginas", y = "tamaño") +
theme_classic()
filter(token %in% "CAPÍTULO")
sería mejor cambiar el operador %in%
por ==
porque solo se está utilizando un valor para hacer el filtro. maria
, podría ver que es porque hay un prólogo. Respecto de que la novela propiamente tal empieza en la página 17, sería bueno explicitar que eso se puede saber al explorar el objeto capitulos
.%in%
por ==
.filter(page > 17 & page < 443)
, no incluye el contenido de las páginas 17 y 443. Y en esas páginas sí hay contenido que es parte de la novela. Tendría que ser filter(page >= 17 & page <=443)
para incluir todo el contenido. Habría que ajustar el resultado del recuento siguiente para que coincida con este cambio. !str_detect(token, "[^[:alpha:]]")
. Sería lo mismo que str_detect(token, "[:alpha:]")
. Sugiero dejar esta última versión porque es más fácil de leer.filter()
. Por ejemplo:
enfermedad_maria %>%
filter(!(token == "mal" & POS %in% c("ADJ", "ADV")))
[ ] ¶ 28 - captura de pantalla. Como es más probable que una persona se tenga que registrar como invitado, quizás sería mejor que el pantallazo incluyera lo que aparece al lado del registro institucional, como acá:
[ ] ¶ 30. Sugiero agregar una captura de pantalla mostrando el menú "The collection" desplegado para hacer más fácil la navegación para personas que no se manejan tan bien con el inglés.
txt
a tsv
. La función read_tsv()
funciona con archivos de extensión txt. En general es preferible mostrar cómo trabajar con los archivos tal como los reciben los usuarios para que sea más fácil replicar esto con otros ejemplos. Ahora, si la razón es porque así un programa como Excel o Libre Office sabe así que es una hoja de cálculo y se puede abrir por defecto con una de esas aplicaciones, entonces habría que explicitarlo así. Porque tal como está da la impresión de que es un paso necesario para poder importarlo a R y no lo es. reader
> readr
fechas.xls
, lo encuentras entre los documentos que acompañan a esta lección. El próximo paso, por lo tanto, será combinar ambas tablasmetadatos <- left_join(metadatos, fechas) |>
select(-rights_date_used)
sub("^([^,]+,\\s[^,0-9]+)([,\\.]|\\s).*", "\\1", metadatos$author)
. Pienso que sería más provechoso en esta sección mostrar cómo uno se aproxima a este tipo de problemas. Acá se parte del ejemplo de Jorge Icaza y luego de resolver ese caso particular se ve que quedan un par de cosas no resueltas. Y muchas veces el procedimiento es más bien identificar primero los distintos patrones en que aparecen escritos los nombres y luego escribir una o más expresiones regulares para hacer la normalización. Así se presenta una método para aproximarse un problema y no queda solo como un ejemplo para este caso en particular.NA
: iconv(metadatos$author,from="UTF-8",to="ASCII//TRANSLIT")
.iconv
no suele dar resultados consistentes entre sistemas operativos. Sugiero utilizar la función stri_trans_general()
del paquete stringi. Ese paquete se instala junto con el paquete stringr, así que puede utilizar llamando directamente la función:
metadatos$author <- stringi::stri_trans_general(str = metadatos$author, id = "Latin-ASCII")
count()
para no perder el nombre de la columnametadatos %>%
count(author, sort = TRUE)
rsync_from_hathi(metadatos$htid, dir = tmpdir)
y cache_htids(metadatos$htid, dir = tmpdir)
arrojan un montón de mensajes en la consola. Se podría explicar quizás a qué corresponden esos mensajes.novelas
. El código lo que hace es generar una medida de resumen a partir de una de las variables contenidas en el objeto novelas
. Así que se pierden datos al reescribirlo. Si bien en esta lección no se van a utilizar esas otras variables, quizás alguien podría querer explorarlas en otro momento. Se podría elegir un nombre que indique que lo que hay ahí son frecuencias de tokens por novelas. obtener_tokens.r
para que no necesite plyr. En el script sale que no funciona con bind_rows()
o rbind()
por que a veces el número de columnas es distinto. Si tienes un ejemplo por ahí en que haya pasado eso, sería genial poder verlo para tratar de buscar una solución que no implique usar un paquete retirado. source("https://raw.githubusercontent.com/programminghistorian/ph-submissions/gh-pages/assets/uso-las-colecciones-hathitrust-mineria-textual-R/obtener_tokens.r")
case_when
trae un argumento (.default
) para definir qué hacer con los casos para los que no se dan condiciones. Así se evita usar TRUE
que no es muy "transparente". La última línea, entonces, quedaría como .default = NA_character_
>table(ciud_unicas$GRUPO)
1900-25 1925-50 Pre-1900
71 133 54
En ella Pre-1900 queda después de 1900-25. Si bien en la lección esa es la única parte en que afecta, si alguien quisiera hacer algún gráfico que muestre comparaciones entre esos grupos le aparecerían en desorden también si es que la variable no se convierte a factor.
La conversión se podría hacer dentro de case_when()
usando el argumento .ptype.
. El bloque de código podría quedar así:
metadatos <- metadatos %>%
mutate(GRUPO = case_when(
publicacion > 1860 & publicacion <= 1900 ~ "Pre-1900",
publicacion > 1900 & publicacion <= 1925 ~ "1900-25",
publicacion > 1925 & publicacion <= 1950 ~ "1925-50",
.default = NA_character_,
.ptype = factor(levels = c("Pre-1900", "1900-25", "1925-50"))
))
ciudades.xlsx
y cómo podría generar uno parecido pensando en otro set de datos.ciudades.xlsx
incluye una versión abreviada del nombre de la ciudad. Y que la razón de incluirlo es que muchas ciudades tienen nombres compuestos por más de una palabra (ejemplo, Puerto Ayora), pero los datos que tenemos de cada novela es solo a nivel de palabra, así que no es posible buscar nombres compuestos. Es importante explicitar en este punto esta limitación. También sería importante advertir que pueden existir falsos positivos por el hecho de que muchos nombres de ciudades son apellidos. metadatos |>
left_join(novelas_frec_tokens) |>
filter(token %in% ciudades$Ciudad_breve) |>
left_join(ciudades, by = c("token" = "Ciudad_breve"), multiple = "all")
Este bloque de código lo que hace es tomar los metadatos que tenemos, agregarle a cada novela su frecuencia de tokens, luego filtrar los tokens que coinciden con los nombres de Ciudades_breve
y finalmente agregar las variables que están en el dataset de ciudades para así tener la tabla completa con todas las variables. Esta aproximación nos va a dejar con dos variables más que la forma propuesta en la lección (autor y título), que pueden ser útiles para resolver los casos de duplicados.
El último join tiene un argumento que es multiple
. Ese argumento permite decidir qué hacer en casos como este, en que tenemos dos posibles ciudades para un mismo nombre abreviado. multiple = "all"
(el valor por defecto) va a dejar todas las opciones, por lo que va a duplicar la información, así:
Como tenemos los datos de autor y título, uno tendría aquí la posibilidad de revisar y decidir a cuál de las dos corresponde a partir del conocimiento que se tiene de las obras. Y así se elimina el duplicado de manera informada.
El argumento multiple
tiene otras opciones: "first", "last" y "any". Eso da control sobre estos casos sobre si se quiere dejar la primera, la última, o cualquiera.
La otra ventaja de usar un join es que cuando ocurre un caso como este en que el nombre abreviado de la ciudad no es único sino que aparece repetido, la función entrega un mensaje que informa sobre esto: Detected an unexpected many-to-many relationship between x and y.
Esto nos permite saber que tenemos que revisar nuestro dataset para resolver la asignación de los nombres de las ciudades.
ciudades_encontradas |>
count(token, sort = TRUE) |>
head()
> mean(ciudades_encontradas$total_volumen)
[1] 72001.25
Y la mediana está más cerca de los 60000.
> summary(ciudades_encontradas$total_volumen)
Min. 1st Qu. Median Mean 3rd Qu. Max.
4922 45239 63941 72001 84480 184923
Quizás sería bueno explicar cómo se decidió que 50000 era la mejor opción.
(num_tokens / total_volumen) * 50000
. En el código se multiplica primero y después se divide. Sé que el resultado es el mismo, pero ponerlo en el mismo orden puede ayudar a quienes no tienen tanta experiencia programando a leer el código con mayor facilidad.#si quieres, verifica que funcionó
sería bueno explicar qué es lo que debiese aparecer al ejecutar esa línea de código. O decir que si les aparece "Coordinate Reference System: NA" entonces no están los datos de coordenadas.Eso es todo por ahora. ¡Cualquier consulta me avisan!
Mil gracias por las revisiones tan detalladas y minuciosas, @jenniferisasi y @rivaquiroga
@jose-eduardo Ya que algunos de estos cambios requieren más tiempo que otros, podríamos fijar una fecha con suficiente tiempo para que puedas dialogar conmigo y con las revisoras. ¿Qué tal te parece el 18 de marzo? Sé que el proceso se ha retrasado(mea culpa) y me imagino que quieres terminar lo más pronto posible. Por favor déjame saber cómo puedo ayudar y te animo a aprovechar el expertise de las revisoras para aclarar cualquier duda.
Nuevamente, gracias por el trabajo excelentísimo de las revisoras.🤩 Es un privilegio trabajar con autores y revisores cómo ustedes.
Gracias a tod@s por el trabajo realizado. Ha sido excelente. La próxima semana ( a partir del sábado próximo) tenemos las breves vacaciones de primavera y entonces tendré tiempo para contestar preguntas y hacer las revisiones que se requieren.
Tengo que entregar un manuscrito en 4 de abril, pero una vez lo haga regreso a este proyecto. ¡No se me ha olvidado!
Estimados, ¿cómo siguen? @jose-eduardo ¿tienes una fecha estimada de cuándo completarás la revisión? Es nada más para yo calcular fechas de siguientes pasos en la revista. ¡Gracias!
Estimados @JoshuaGOB y @jose-eduardo, ¿cómo van? Paso nada más a preguntar si necesitan ayuda para los siguientes pasos de revisión final. Me encantaría publicar esta magnífica lección para primeros de septiembre, lo cual nos evitaría caer en un nuevo semestre (sabiendo lo que ello conlleva). ¡Gracias!
Gracias Jennifer, en estos días volveré a trabajar en esto. No necesito ayuda, solo..tiempo...Lo siento si se me he tardado más de lo debido. Estoy seguro que estará listo para septiembre.
@jenniferisasi Parece que la mejor solución para esos problemas que menciona Quiroga es eliminar la sección final, con los mapas, y ofrecer algo más sencillo que no necesite paquetes como tmap, sf y otros. Eso haré esta semana.
Gracias, @jose-eduardo!
I've double-checked that you have the Write access you need, but please let us know if you need any practical support with making these revisions 🙂
@jenniferisasi y @anisa-hawes acabo de terminar mis revisiones. Leyendo las excelentes sugerencias de @rivaquiroga me di cuenta que habían dos problemas principales con el tutorial: 1] falta de foco y 2] el uso de varios paquetes de R que pueden dejar de funcionar en el futuro lo que le restaría utilidad al tutorial a menos que se le actualizara. Al rehacerlo, seguí por eso las recomendaciones de @rivaquiroga de que la sección sobre novela mexicana se convirtiera en un primer paso hacia la creación del conjunto de novelas ecuatorianas y de esa manera habría un mejor flujo de una sección a otra. Para el enfoque también ayudó eliminar otras partes que no tenían nada que ver con el propósito principal: enseñar cómo usar los datos de Hathitrust para mineria textual.
Eliminados: varios paquetes que ahora son innecesarios como ggplot, sf, tmap, rnaturalearth, tidyverse. Siguiendo el consejo de Riva Quiroga, he eliminado el paquete "plyr" del código para Windows.
Finalmente, he eliminado las secciones de "limpiar" datos y crear mapas. Estaban desconectados con el tópico principal. Por último, tengo nuevas imágenes, y no sé cómo añadirlas al github (no quiero romper nada), así que se las puedo enviar por email, con indicaciones de donde colocarlas, a @jenniferisasi
Thank you, @jose-eduardo!
If you haven't already emailed the images to Jennifer, feel free to email the new images directly to me: admin[@]programminghistorian.org. I'd be happy to process and upload these for you.
It would be wonderful if you could either share line numbers from the Markdown file /es/borradores/originales/uso-las-colecciones-hathitrust-mineria-textual-R, or paragraph numbers within the lesson Preview https://programminghistorian.github.io/ph-submissions/es/borradores/originales/uso-las-colecciones-hathitrust-mineria-textual-R so that we know where you want these new figures to be located within your lesson.
¡Gracias @jose-eduardo! Me apunto re-leer la lección con un ojo atento a los cambios realizados. @JoshuaGOB cuando tengas un ratito, dinos también qué te parecen los cambios.
Y sobre las imágenes, como dijo Anisa, me las puedes enviar a mí o directamente a ella y nos encargamos de añadirlas.
Sé que estuviste ocupado: ¡Felicidades por la nueva doctora cornhusker!
Hi @jose-eduardo and @jenniferisasi,
I've uploaded the new images to the lesson's image folder, and I've also inserted the liquid syntax at the indicated spots in the markdown file (see this commit).
@jose-eduardo, I would be very grateful if you could double-check that they are where you want them – feel free to make direct edits where needed.
Can I also ask that you provide the alt-text and figure caption for Figures 5-8? You can edit the liquid syntax directly in the file as well.
Muchas gracias ✨
Hi @charlottejmc and @jenniferisasi . I have changed the position of one of the images and everything looks perfect now and I added the captions-- you guys probably want to fix the image numbers for figures 5, 6 and 7 so they correspond to the number I am giving them on the tutorial (makes sense?). I think this is ready and now it is up to you guys to decide if more changes are needed.
best
JEG
Hi @jose-eduardo, thank you for letting me know! I've updated the image numbers now for 5, 6 and 7, so it should display correctly.
Hola @jose-eduardo,
Thank you for your work on these revisions!
Next @JoshuaGOB and @jenniferisasi will read your lesson through, to confirm that it is ready to move onwards to the next phase of our workflow which is Phase 6: Sustainability + Accessibility. As this is an original lesson, the first part of that process will be copyediting.
I think we are on track to publish before the end of September ✨
Algo que he notado es que la previsualización todavía tiene un enlace al archivo "obtener_tokens.r" viejo. Estoy añadiendo aquí el nuevo, que no necesita usar el paquete "plyr". obtener_tokens.zip
The Programming historian en español ha recibido una propuesta de lección con el título provisional "Uso de las colecciones del HathiTrust para el análisis de textos literarios en R" por @jose-eduardo. Los objetivos de la lección son:
La fecha aproximada para la entrega de la lección es el 31 de agosto de 2023. Si no se entrega para entonces, la editora manager contactará con el autor de la lección para sugerir otra fecha. Si no recibe noticias, el ticket se cerrará. Éste podrá abrirse en el futuro a petición del autor.
El principal contacto para esta lección es, por ahora, @jenniferisasi. Si se produce algún problema, el autor puede contactar con nuestra ’ombudsperson' (Silvia Gutiérrez de la Torre - http://programminghistorian.org/es/equipo-de-proyecto).