Hola a todos,
Tengo una tabla JMP que incluye el texto completo de varios artículos de revistas. Cada registro tiene el título del artículo en una columna (como ID) y el texto completo del artículo en otra. Estoy interesado en crear una nueva columna que solo tenga el texto de la sección de Métodos de cada artículo. Empecé a pensar que esto podría ser posible después de ver el @brady_brady Tutorial "Recodificar revisión" https://community.jmp.com/t5/JMP-On-Air/Recode-Review/ta-p/261025 . Mi idea sería buscar en el campo de texto completo para cada registro la palabra "métodos" y luego reemplazarla con un delimitador arbitrario y poco común (por ejemplo, $% ^). A continuación, buscaría en el campo de texto completo de cada documento la palabra "resultados" y la reemplazaría con un delimitador arbitrario diferente (por ejemplo,! @ #). Luego, de alguna manera podría usar texto en columnas o RegEx para subconjuntar solo el texto entre estos dos delimitadores. Esto parece teóricamente posible. Sin embargo, supongo que sería complicado (si no se vuelve impráctico) cuando las palabras Métodos o Resultados estén presentes más de una vez en el documento (que suele ser el caso). ¿Alguna sugerencia / advertencia?
Hola,
Esta es la fórmula más básica que puede utilizar para extraer directamente el texto entre la primera aparición de la palabra "Métodos" y la primera aparición de la palabra "Resultados".
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "METHODS" ),
Contains( Uppercase( :TEXT ), "RESULTS" )
-Contains( Uppercase( :TEXT ), "METHODS" )
)
Estoy bastante seguro de que esto solo funcionará para un subconjunto de los datos de texto completo porque estas dos palabras son extremadamente comunes en artículos científicos, pero le da una idea de cómo usar fórmulas JMP sin tener que insertar caracteres especiales y usar Regex .
Mejor,
TS
Como en muchos (¿casi todos?) De estos casos, "depende". Si los datos están bien estructurados, puede haber otras características que pueda utilizar para dar cuenta de esto. Por ejemplo, si los artículos son todos de la misma revista, es posible que pueda aprovechar la coherencia estructural entre ellos. A veces, realmente tienes que ser creativo y, a veces, es casi imposible encontrar una forma de dividir el texto que deseas con una regla de análisis general. Más herramientas permiten más creatividad y poder, por supuesto.
Asegúrese de ver la función "extraer segmento" de Recode y, como ha mencionado, algunas expresiones regulares.
Lo siento, no puedo ser de más ayuda aquí.
Salud,
Brady
Hola de nuevo,
Después de un poco de experimentación, encontré una manera de lograr el objetivo de análisis de texto de mi artículo de revista utilizando la fórmula simple proporcionada por @Thierry_S . El desafío en mi caso fue que mis "artículos" provienen de una gran cantidad de revistas diferentes, todas las cuales tienen diferentes formatos y etiquetas de subtítulos. En consecuencia, ningún enfoque estándar orientado a patrones funcionaría. Lo que terminé haciendo requirió una edición manual de archivos PDF, pero no fue tan malo y parece ser 100% efectivo.
Primero, abrí cada pdf y edité el texto para que los diferentes bloques de contenido estándar tuvieran sus propios delimitadores. En mi caso, quería categorías estándar de resumen, introducción, métodos, resultados, discusión y literatura citada. Entonces, dentro de cada artículo, encontré el primer encabezado que coincidía con mi concepto de "métodos". En algunos casos, esta era en realidad la palabra "métodos", pero en otros casos era algo así como "materiales y métodos" o "área de estudio". De cualquier manera, al final del subtítulo deseado agregué un delimitador único (por ejemplo, CCCCC). Luego, encontré el primer subtítulo que coincidía con mi concepto de "resultados", que a menudo era la palabra "resultados", pero cada revista es diferente y, a veces, se usaron otras palabras. Independientemente del subtítulo, agregué un delimitador único (por ejemplo, DDDDD). Hice lo mismo para cada uno de los seis bloques de contenido estándar que quería en todo mi corpus.
A continuación, convertí todos mis archivos PDF editados a archivos .txt (usando un software diferente, fuera de JMP).
Luego, utilicé la IMPRESIONANTE herramienta "Importar varios archivos" en JMP para crear una tabla de datos que tenía una fila por artículo con el texto completo de cada artículo en una sola columna.
En este punto, todo lo que tenía que hacer era crear 6 columnas nuevas, una para cada encabezado, y usar una variación de la fórmula proporcionada por Thierry_S para recopilar los fragmentos de contenido que deseaba. Por ejemplo, para crear una columna "métodos", utilicé la fórmula
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "CCCCC" ),
Contains( Uppercase( :TEXT ), "DDDDD" )
-Contains( Uppercase( :TEXT ), "CCCCC" )
)
Luego, para crear una columna de "resultados", utilicé la fórmula
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "DDDDD" ),
Contains( Uppercase( :TEXT ), "EEEEE" )
-Contains( Uppercase( :TEXT ), "DDDDD" )
)
Al final, tengo una tabla de datos para 800 artículos donde cada artículo tiene información en las columnas estándar de resumen, introducción, métodos, resultados, discusión y literatura citada. BINGO, ¡Aleluya!
Si bien este enfoque requirió el paso manual de insertar mis delimitadores en archivos PDF, ese proceso solo tomó un día. Dada la enorme variación en el formato de los artículos y la ausencia de metadatos de "etiquetas" consistentes en los artículos, esta fue una forma bastante infalible de hacerlo. Tal vez haya una manera de insertar estas etiquetas automáticamente, buscando una lista de palabras que puedan cumplir con los criterios de la sección (p. Ej., "Métodos", "resultados"), pero como se mencionó en otra parte de este hilo, esas son palabras muy comunes en artículos de revistas que pueden aparecer en casi cualquier sección. El enfoque manual me permitió capturar texto de todos mis archivos PDF, ya sea que se originaran como archivos PDF de revistas o informes escaneados deficientemente que han sido sometidos a OCR durante los últimos 30 años.
Una vez mas, Gracias @Thierry_S para tu publicación. ¡La flexibilidad de JMP ataca de nuevo!
Casey