Import Data)
Geographic & Journal Analysis)
Preprocess)LDA Inference)Stability & Sensitivity)
Final LDA Model)
Topic Trends)
LDAShiny es una aplicación web desarrollada con Shiny
(Chang et al., 2017) y el framework golem (Fay et al., 2022). Permite
realizar una revisión exploratoria de la literatura científica mediante
el modelo de Asignación Latente de Dirichlet (LDA; Blei, Ng y Jordan,
2003) sin necesidad de escribir código: desde la carga de datos
bibliográficos hasta la interpretación de tópicos y el análisis de su
evolución temporal.
Esta guía recorre cada pestaña de la aplicación en el orden recomendado:
| Paso | Pestaña | Qué hace |
|---|---|---|
| 0 | About |
Descripción, especificaciones técnicas y cómo citar el paquete. |
| 1 | Import Data |
Importa y fusiona archivos de Scopus, Web of Science o bibliometrix; los limpia con criterios PRISMA; resume el corpus. |
| 1b | Geographic & Journal Analysis |
Tablas y gráfico de producción por país y revista; mapa coroplético mundial; red de colaboración internacional. |
| 2 | Preprocess |
Limpia el texto, construye la matriz documento-término (DTM) y permite refinar las palabras vacías. |
| 3 | LDA Inference |
Ajusta modelos LDA para un rango de K y selecciona el K con mayor coherencia. |
| 4 | Stability & Sensitivity |
Evalúa la robustez de la elección de K. |
| 5 | Final LDA Model |
Entrena el modelo final y proporciona tablas, nubes de palabras, la matriz theta y LDAvis. |
| 6 | Topic Trends |
Clasifica los tópicos como crecientes, decrecientes o estables a lo largo de los años. |
El paquete requiere R >= 4.1.0. Una vez instalado, la aplicación se inicia con una sola función:
Los archivos bibliográficos (por ejemplo, exportaciones de Scopus) pueden ser grandes. Shiny limita las cargas de archivos a 5 MB por defecto; si sus archivos son mayores, aumente el límite antes de iniciar la aplicación:
Cada paso depende de la salida del anterior, por lo que conviene seguir el orden de la barra lateral:
| Módulo | Recibe | Proporciona |
|---|---|---|
Import Data |
Archivos Scopus / WoS / bibliometrix / Excel | Tabla limpia de documentos (con columna
country). |
Geographic & Journal Analysis |
Tabla limpia de documentos | Tablas de producción, mapa coroplético y red de colaboración. |
Preprocess |
Tabla de documentos | DTM final (matriz dispersa) y tabla de frecuencia de términos. |
LDA Inference |
DTM | Tabla de coherencia y K óptimo. |
Stability & Sensitivity |
DTM, tabla de coherencia, K óptimo | Estabilidad por K y sensibilidad a los pesos. |
Final LDA Model |
DTM, K óptimo, tabla de documentos | Modelo final, matrices beta/gamma/theta, intensidad tópico-año. |
Topic Trends |
Intensidad tópico-año | Clasificación de tendencia para cada tópico. |
Los botones de descarga de cada módulo permanecen desactivados hasta que se haya ejecutado el análisis correspondiente.
La pestaña About resume qué hace la aplicación, sus
especificaciones técnicas (versión, framework y paquetes principales),
la forma recomendada de citar LDAShiny, e información sobre
el grupo de investigación y el autor.
Import Data)Primero elija una acción en el menú Select an action:
| Acción | Qué carga |
|---|---|
Merge Scopus + Web of Science |
Uno o más archivos CSV de Scopus y uno o más archivos TXT de Web of Science, fusionados en una sola tabla. Haga clic en Process and Merge. |
Load Integrated Excel File |
Un archivo .xlsx ya integrado (por
ejemplo, descargado previamente desde esta misma pestaña). Se procesa en
cuanto se carga. |
Load Bibliometrix File |
Un archivo .xlsx o .RData
exportado desde Biblioshiny o producido con
bibliometrix::convert2df(). Se mapea automáticamente al
formato de LDAShiny. |
Los campos utilizados por el resto de la aplicación son
title, abstract, year,
Journal, doi y database; la
limpieza PRISMA también usa affiliations. Para archivos
Excel, los nombres de columna se comparan sin distinción de mayúsculas y
se aceptan los alias habituales (por ejemplo, TI,
AB, PY, SO, DI,
DB, C1). El archivo Excel debe incluir una
columna database, porque el módulo de entrenamiento la usa
para calcular la intensidad de tópicos por fuente.
Cada carga pasa por una secuencia de filtros, inspirada en el esquema PRISMA (Page et al., 2021), aplicados en orden, con registro de los conteos:
| Fase PRISMA | Criterio |
|---|---|
| Identificación | Registros sin título. |
| Cribado | Eliminación de duplicados: por DOI normalizado; los registros sin DOI se comparan mediante una huella digital formada por los primeros 200 caracteres del resumen, el año y la revista. |
| Cribado | Registros sin resumen (incluidos los marcadores de posición como “[No abstract available]”). |
| Elegibilidad | Registros sin afiliación (solo si existe la columna de afiliaciones). |
| Elegibilidad | Registros sin año. |
| Elegibilidad | Registros sin revista o fuente. |
Tras el filtrado, se añade una columna country (el
primer país en las afiliaciones). Esta columna no elimina registros y no
es un paso PRISMA. Cuando termina la carga, la aplicación muestra un
resumen de la importación, y el estado actual aparece en el cuadro
Instructions and Status.
Una vez cargados los datos, las otras pestañas del módulo permiten inspeccionarlos antes de continuar:
Journal Count admite estilo de barras o lollipop y entre 5
y 50 revistas; el gráfico Year Count muestra la producción
por año. El menú desplegable de personalización controla etiquetas,
tema, fuente, colores, tamaño de puntos y opciones de exportación (PNG,
TIFF, JPEG o PDF, con ancho, alto y DPI).country.Geographic & Journal Analysis)Este módulo está disponible en cuanto se han importado los datos. Ofrece tres vistas complementarias del corpus y no afecta al flujo de modelado.
El panel izquierdo controla la configuración de todas las vistas de esta pestaña:
| Control | Descripción |
|---|---|
| Top N countries | Número de países líderes en la tabla de países (5-50, por defecto 20). |
| Top N journals | Número de revistas líderes en la tabla de revistas (5-50, por defecto 20). |
| Variable | Si el gráfico muestra países o revistas. |
| Style | Gráfico de barras o lollipop. |
| Top N to plot | Número de entradas en el gráfico (5-30, por defecto 15). |
| Customize chart | Menú desplegable con etiquetas, tema, tamaño de fuente, colores, transparencia y opciones de exportación (PNG, TIFF, JPEG o PDF, con ancho, alto y DPI). |
El panel Results tiene tres pestañas internas:
Mapa coroplético mundial de documentos por país. Opciones:
| Control | Descripción |
|---|---|
| Color Palette | Familia viridis (viridis, magma, plasma, inferno, cividis, mako, rocket, turbo) o paletas ColorBrewer (Blues, Reds, YlOrRd, YlGnBu, Spectral). |
| Color Scale | Logarítmica (log10) o lineal. |
| Palette Direction | Normal o invertida. |
| Map Title | Título editable. |
| Color NA countries | Color de relleno para países no presentes en el corpus. |
| Border color / Border width | Apariencia de las fronteras entre países. |
Las opciones de exportación permiten descargar el mapa (PNG, TIFF, JPEG o PDF) y la tabla subyacente de frecuencias por país (Excel).
Esta pestaña construye una red internacional de coautoría a partir de
la columna affiliations. Para cada registro la aplicación
extrae todos los países mencionados en las afiliaciones, crea un par
(país A, país B) para cada combinación de coautoría, agrega los pares en
todo el corpus y visualiza el resultado como un grafo.
Filtros y controles visuales:
| Control | Descripción |
|---|---|
| Min. collaborations | Peso mínimo de arista (número de registros en coautoría) para que aparezca un enlace. |
| Max. countries to show | La red conserva solo los N países principales por grado, para evitar saturación visual. |
| Network Layout | Siete opciones: Fruchterman-Reingold (por defecto), Kamada-Kawai, Circle, Star, Grid, Sphere y Random. |
| Node size scale | Escala del área del nodo (proporcional al grado ponderado / strength). |
| Edge transparency | Transparencia (alpha) de las aristas. |
| Node color / Edge color | Colores base cuando no se usa gradiente por métrica. |
| Label size | Tamaño de las etiquetas de países. |
| Color nodes by | Gradiente de color de los nodos basado en una métrica de centralidad (ver tabla abajo). |
| Metric color palette | Paleta para el gradiente de color de los nodos (familia viridis o ColorBrewer). |
Haga clic en Build Network para calcular el grafo. Las tres pestañas internas muestran:
Métricas de centralidad disponibles:
| Métrica | Descripción |
|---|---|
| Strength | Suma de los pesos de arista (total de copublicaciones). |
| Degree | Número de países socios distintos. |
| Betweenness | Fracción de caminos más cortos que pasan por el nodo (normalizado). Usa pesos inversos para que los vínculos más fuertes se traten como caminos más cortos. |
| Closeness | Inverso de la longitud media del camino más corto a todos los demás nodos (normalizado). |
| PageRank | Puntuación de autoridad basada en la estructura de enlaces, ponderada por el recuento de colaboraciones. |
| Hub score | Puntuación de hub de Kleinberg: nodos que enlazan con muchas autoridades importantes. |
| Authority score | Puntuación de autoridad de Kleinberg: nodos enlazados por muchos hubs importantes. |
| Clustering coefficient | Transitividad local: fracción de los vecinos de un nodo que también están conectados entre sí. |
Preprocess)Este módulo convierte el texto en una matriz documento-término. Todo se configura en la pestaña Settings y se ejecuta con Run Preprocessing.
| Opción | Descripción |
|---|---|
| Select text column | Columna con el texto a modelar. Por defecto:
abstract. |
| Select document ID column | Columna que identifica cada documento. Por defecto:
title (o doi si no hay título). |
| Upload Additional Stopwords | Archivo .xlsx con palabras vacías
adicionales en la primera columna, una por fila y sin encabezado. |
| Min n-gram / Max n-gram | Tamaño de n-gramas, de 1 a 3. Por defecto 1 y 2 (palabras simples y bigramas). |
| Apply stemming | Aplica el algoritmo de Porter. Activado por defecto. |
| Remove numbers / Remove punctuation | Eliminar números y puntuación. Activados por defecto. |
| Sparse filter | Dispersión máxima permitida por término (0,90 a 0,9999; por defecto 0,995). Cuanto menor es el valor, más términos raros se eliminan. |
| Number of CPUs | Núcleos utilizados para construir la DTM. |
El texto siempre se convierte a minúsculas y siempre se eliminan las palabras vacías en inglés, junto con las del archivo cargado y las añadidas de forma interactiva. Por esta razón la aplicación está diseñada para corpus en inglés.
Las otras pestañas del módulo muestran y permiten refinar el resultado:
tf_mat.xlsx) y la DTM final
(dtm_final_sparse.rds).LDA Inference)El módulo ajusta un modelo LDA para cada valor de K en el rango elegido, en paralelo, y calcula la coherencia de cada tópico (Mimno et al., 2011). La medida resumen para cada modelo es la coherencia media de sus tópicos.
| Opción | Por defecto |
|---|---|
| Minimum number of topics (k start) | 5 |
| Maximum number of topics (k end) | 40 |
| Step for k | 1 |
| Iterations | 500 |
| Burn-in | 50 |
| Alpha | 0,1 |
| Number of CPUs | depende de la máquina |
Haga clic en Run LDA Inference. Cuando termina, el estado informa el K con mayor coherencia media y el tiempo transcurrido. Los resultados aparecen en dos pestañas:
coherence_mat.xlsx).El K con coherencia máxima es un punto de partida, no una decisión final. Las curvas de coherencia suelen tener varias regiones con valores similares, razón por la cual el siguiente paso evalúa la robustez de la elección.
Stability & Sensitivity)Este módulo comprueba si el K elegido es robusto, utilizando tres ideas:
| Opción | Por defecto | Descripción |
|---|---|---|
| Number of seeds | 5 (3 a 20) | Ejecuciones independientes por K. |
| Base seed | 42 | Primera semilla de la secuencia. |
| Iterations per seed | 300 | Iteraciones de cada ejecución. |
| Burnin per seed | 150 | Iteraciones de calentamiento. |
| CPUs for parallel training | depende de la máquina | Núcleos disponibles. |
| Select K candidates | K óptimo y sus vecinos | Valores de K a evaluar; se ofrecen los probados en
LDA Inference. Debe seleccionar al menos dos. |
Todos los criterios se normalizan al rango 0 a 1 entre los K evaluados:
| Criterio | Peso por defecto | Qué mide |
|---|---|---|
| Plateau | 0,30 | Favorece los valores de K donde la coherencia cambia poco respecto al K anterior, es decir, regiones planas de la curva. |
| Stability | 0,30 | ARI medio de las ejecuciones respecto a la primera ejecución. |
| Parsimony | 0,20 | Favorece valores de K más pequeños. |
| Interpretability | 0,20 | Aproximación basada en coherencia (70%) y baja variabilidad de coherencia entre ejecuciones (30%). |
Los pesos se reescalan automáticamente para que sumen 1. La interpretabilidad es una aproximación numérica: no sustituye la lectura de los términos de cada tópico.
Haga clic en Run Stability Analysis. Los resultados se organizan en cinco pestañas:
Los gráficos se descargan como PNG y las tablas como Excel. Un K que gana en casi todos los esquemas y tiene un ARI alto es más fácil de defender que uno que gana bajo un único conjunto de pesos.
Final LDA Model)El número de tópicos (Number of topics (K)) se
inicializa con el K óptimo de LDA Inference, pero puede
modificarse. Cuando se recibe el K óptimo, alpha también se actualiza
automáticamente a 50 / K (redondeado a dos decimales).
| Opción | Por defecto |
|---|---|
| Iterations | 500 |
| Burn-in | 50 |
| Alpha (prior Dirichlet sobre theta) | 0,1 (actualizado a 50/K al sincronizarse con el paso de inferencia) |
| Beta (prior Dirichlet sobre phi) | 0,05 |
| CPUs for Model Training | todos menos uno |
| Optimize Alpha during run | activado |
| Model Evaluation Metrics | verosimilitud y coherencia (R-cuadrado es opcional) |
Haga clic en Train Final LDA Model. Cuando termina, se activa Download Final LDA Model (.rds).
| Pestaña | Contenido | Archivo de descarga |
|---|---|---|
| Model Evaluation Metrics | Parámetros del modelo y las métricas globales seleccionadas (log-verosimilitud media, coherencia media, R-cuadrado). | lda_model_metrics.xlsx |
| Top Terms Matrix | Una columna por tópico (t_1,
t_2, …) y una fila por rango (1 = término más importante).
El número de términos (M) es configurable. |
lda_top_terms_matrix.xlsx |
| Document Topic Assignment | Tópico dominante de cada documento (el de mayor gamma). | toptopic.xlsx |
| Top Documents per Topic | Los documentos con mayor gamma en cada tópico; el número es configurable. | clasificacion.xlsx |
| Topic-Term Weights (Beta) | Matriz tópico-término en formato largo. La vista muestra los 5 términos principales por tópico; la descarga contiene la matriz completa. | tidy_beta.xlsx |
| Document-Topic Weights (Gamma) | Matriz documento-tópico en formato largo. La vista muestra una muestra; la descarga contiene la matriz completa. | tidy_gamma.xlsx |
| Topic Word Cloud | Nube de palabras del tópico elegido, con número máximo de palabras, color base o paleta RColorBrewer, y exportación (PNG, JPEG, PDF o TIFF, con ancho, alto y DPI). | depende del formato |
| Theta Matrix (Full) | Matriz documento-tópico completa con los metadatos
title, country y Journal y una
columna por tópico. |
theta_matrix_full_K<K>_<fecha>.xlsx |
| LDAvis | Visualización interactiva de tópicos (ver más abajo). |
Los tópicos se denominan t_1, …, t_K. La
matriz de términos principales, la matriz theta y LDAvis usan esa misma
numeración: el tópico t_3 en la tabla de términos es el
tópico 3 en LDAvis y la columna t_3 de la matriz theta.
Para garantizarlo, LDAvis se genera sin reordenar los tópicos por
prevalencia, que es su comportamiento por defecto. Antes de abrirlo, la
aplicación verifica que el término principal de cada tópico en LDAvis
coincida con el de la tabla y avisa si encuentra una diferencia.
Haga clic en Abrir LDAvis y la visualización se abre en una nueva pestaña del navegador (permita las ventanas emergentes). LDAvis (Sievert y Shirley, 2014) proyecta los tópicos en dos dimensiones y muestra los términos más relevantes para el tópico seleccionado.
El archivo lda_final_model.rds contiene el objeto
devuelto por textmineR::FitLdaModel(), al que la aplicación
añade la prevalencia de cada tópico (como porcentaje), las etiquetas y
los parámetros utilizados. Puede cargarlo en R para continuar el
análisis:
Topic Trends)Este módulo parte de la intensidad de cada tópico por año, calculada como la gamma media de los documentos de ese año, y evalúa su evolución con dos pruebas complementarias:
| Opción | Por defecto | Descripción |
|---|---|---|
| Significance Level (α) | 0,05 | Umbral de significancia. |
| Exclude last year | activado | Excluye el último año del corpus, que suele estar solo parcialmente indexado. |
| Apply FDR correction | activado | Ajusta los valores p para comparaciones múltiples con el método de Benjamini-Hochberg (1995). |
| Select Topic for Plotting | primer tópico | Tópico a graficar; aparece una vez ejecutado el análisis. |
Haga clic en Run Trend Analysis. Un tópico necesita al menos cuatro años de datos para ser evaluado; con menos, se clasifica como estable por datos insuficientes.
La clasificación requiere que las dos pruebas converjan:
| Resultado | Condición |
|---|---|
Increasing / Declining |
La pendiente MCO y τ tienen el mismo signo y ambas pruebas son significativas. |
Increasing* / Declining* |
Ambas pruebas coinciden en signo, pero solo una es significativa. |
Stable |
Ninguna es significativa, los signos difieren, o no hay suficientes datos. |
topic_year_intensity_data.xlsx).topic_trend_regression_results.xlsx).| Módulo | Archivo |
|---|---|
Import Data |
Archivo Excel integrado, tabla de países, tabla PRISMA, diagrama PRISMA y gráficos |
Geographic & Journal Analysis |
Tabla de países, tabla de revistas, gráfico de producción, mapa coroplético, tabla de frecuencias por país, lista de aristas y métricas de red (como Excel o imagen) |
Preprocess |
tf_mat.xlsx,
dtm_final_sparse.rds,
custom_stopwords_<fecha>.xlsx |
LDA Inference |
coherence_mat.xlsx y gráfico de
coherencia |
Stability & Sensitivity |
Stability_Results_<fecha>.xlsx,
Weight_Sensitivity_<fecha>.xlsx y gráficos PNG |
Final LDA Model |
lda_final_model.rds,
lda_model_metrics.xlsx,
lda_top_terms_matrix.xlsx, toptopic.xlsx,
clasificacion.xlsx, tidy_beta.xlsx,
tidy_gamma.xlsx,
theta_matrix_full_K<K>_<fecha>.xlsx, nubes de
palabras |
Topic Trends |
topic_year_intensity_data.xlsx,
topic_trend_regression_results.xlsx y gráfico |
Model Evaluation Metrics), y guarde el
archivo .rds del modelo final.Refine Stopwords para eliminar
términos genéricos del dominio y ejecute el flujo de trabajo de
nuevo.Sparse filter).shiny.maxRequestSize antes de iniciar la aplicación (ver
«Instalación e inicio»).Topic Trends no muestra resultados.
Entrene primero el modelo final: este módulo usa la intensidad
tópico-año calculada en Final LDA Model, que requiere que
los datos importados tengan columnas year y
database.LDA Inference y Stability & Sensitivity
entrenan muchos modelos. Reduzca el rango de K, use un paso mayor que 1
para una primera exploración y asigne más núcleos de CPU.Si utiliza LDAShiny en su investigación, por favor
cite:
De la Hoz-M., J., Fernandez-Gomez, M. J. y Mendes, S. (2021). LDAShiny: An R Package for Exploratory Review of Scientific Literature Based on a Bayesian Probabilistic Model and Machine Learning Tools. Mathematics, 9(14), 1671. https://doi.org/10.3390/math9141671
Benjamini, Y. y Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B, 57(1), 289-300.
Blei, D. M., Ng, A. Y. y Jordan, M. I. (2003). Latent Dirichlet Allocation. Journal of Machine Learning Research, 3, 993-1022.
Chang, W., Cheng, J., Allaire, J. J., Sievert, C., Schloerke, B., Xie, Y., et al. shiny: Web Application Framework for R. Paquete de R.
Fay, C., Rochette, S., Guyader, V. y Girard, C. (2022). Engineering Production-Grade Shiny Apps. Chapman & Hall/CRC.
Hubert, L. y Arabie, P. (1985). Comparing partitions. Journal of Classification, 2, 193-218.
Mann, H. B. (1945). Nonparametric tests against trend. Econometrica, 13(3), 245-259.
Mimno, D., Wallach, H., Talley, E., Leenders, M. y McCallum, A. (2011). Optimizing semantic coherence in topic models. Proceedings of EMNLP, 262-272.
Page, M. J. et al. (2021). The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. BMJ, 372, n71.
Sievert, C. y Shirley, K. (2014). LDAvis: A method for visualizing and interpreting topics. Proceedings of the Workshop on Interactive Language Learning, Visualization, and Interfaces, 63-70.