¡Feliz Año Nuevo a todos!
Empecé a explorar este conjunto de datos de Kaggle: https://www.kaggle.com/chicago/chi-restaurant-inspections . Cada fila es una inspección de restaurante, con una sola columna para la lista de infracciones. Afortunadamente, las violaciones están delimitadas por "|". Muestra a continuación. El número de violaciones varía.
40. REFRIGERACIÓN Y TERMÓMETROS DE VÁSTAGO METÁLICOS PROPORCIONADOS Y CONSPICUOS - Comentarios: SE NECESITA TERMÓMETRO DE VÁSTAGO PARA MONITOREAR LAS TEMPERATURAS DE LOS ALIMENTOS. ENCARGADO DE SUMINISTRAR Y MANTENER. | 41. LOCALES MANTENIDOS LIBRES DE BASURA, ARTÍCULOS INNECESARIOS, EQUIPO DE LIMPIEZA APROPIADAMENTE ALMACENADO - Comentarios: SE OBSERVARON ALGUNOS ARTÍCULOS NO ELEVADOS 6 PULGADAS DEL PISO EN EL ÁREA DE PREPARACIÓN TRASERA. DEBE ELEVARSE Y MANTENER. | 38. VENTILACIÓN: HABITACIONES Y EQUIPOS VENTILADOS SEGÚN SE REQUIERA: FONTANERÍA: INSTALADA Y CON MANTENIMIENTO - Comentarios: FREGADERO DE HALLADO A MANO EXPUESTO EN LA COCINA TRASERA ÁREA DE PREPARACIÓN DE ALIMENTOS DRENAJE LENTO. DEBE REPARAR Y MANTENER. | 32. SUPERFICIES EN CONTACTO CON ALIMENTOS Y NO ALIMENTOS DISEÑADAS, CONSTRUIDAS Y MANTENIDAS ADECUADAMENTE - Comentarios: SE OBSERVA ESTANTERÍA DE ALMACENAMIENTO DE ALIMENTOS OXIDADA EN EL SÓTANO. DEBE REPINTAR Y MANTENER. | 34. PISOS: CONSTRUIDOS SEGÚN EL CÓDIGO, LIMPIADOS, EN BUEN ESTADO, REVESTIMIENTO INSTALADO, MÉTODOS DE LIMPIEZA SIN POLVO UTILIZADOS - Comentarios: SUCIEDAD Y DESECHOS OBSERVADOS EN EL PISO DEBAJO DE LAS TARIMAS EN EL SÓTANO. DEBE LIMPIAR Y MANTENER.
Mirando la estructura: ViolationID#. Violation_Type - Comentarios. Puedo pensar en dos formas de analizar estas cadenas en ID#, Tipo, Comentarios:
1) Columnas > Utilidades > Texto a columnas, luego Tablas > Apilar, luego elimine filas en blanco, luego analice la nueva columna con Word (texto, delimitador)
2) Use Words(Violations, "|") para crear una lista como la siguiente y luego trabaje en cada uno de los elementos de la lista
{"40. REFRIGERACIÓN Y TERMÓMETROS DE VÁSTAGO METÁLICOS PROPORCIONADOS Y CONSPICUOS - Comentarios: SE NECESITA TERMÓMETRO DE VÁSTAGO PARA MONITOREAR LAS TEMPERATURAS DE LOS ALIMENTOS. ENCARGADO DE SUMINISTRAR Y MANTENER. "," 41. LOCALES MANTENIDOS LIBRES DE BASURA, ARTÍCULOS INNECESARIOS, EQUIPO DE LIMPIEZA APROPIADAMENTE ALMACENADO - Comentarios: SE OBSERVARON ALGUNOS ARTÍCULOS NO ELEVADOS 6 PULGADAS DEL PISO EN EL ÁREA DE PREPARACIÓN TRASERA. DEBE ELEVARSE Y MANTENER. "," 38. VENTILACIÓN: HABITACIONES Y EQUIPOS VENTILADOS SEGÚN SE REQUIERA: FONTANERÍA: INSTALADA Y CON MANTENIMIENTO - Comentarios: FREGADERO DE HALLADO A MANO EXPUESTO EN LA COCINA TRASERA ÁREA DE PREPARACIÓN DE ALIMENTOS DRENAJE LENTO. DEBE REPARAR Y MANTENER. "," 32. SUPERFICIES EN CONTACTO CON ALIMENTOS Y NO ALIMENTOS DISEÑADAS, CONSTRUIDAS Y MANTENIDAS ADECUADAMENTE - Comentarios: SE OBSERVA ESTANTERÍA DE ALMACENAMIENTO DE ALIMENTOS OXIDADA EN EL SÓTANO. DEBE REPINTAR Y MANTENER. "," 34. PISOS: CONSTRUIDOS SEGÚN EL CÓDIGO, LIMPIADOS, EN BUEN ESTADO, REVESTIMIENTO INSTALADO, MÉTODOS DE LIMPIEZA SIN POLVO UTILIZADOS - Comentarios: SUCIEDAD Y DESECHOS OBSERVADOS EN EL PISO DEBAJO DE LAS TARIMAS EN EL SÓTANO. DEBE LIMPIAR Y MANTENER."}
No tengo mucha experiencia en el uso de listas.
¿Sería más eficiente trabajar con la lista {}, usar el enfoque Texto a columnas o hay alguna forma mejor? Si el enfoque de lista es el más eficiente, ¿cuál es el enfoque más eficiente para hacer el equivalente a Tablas> Apilar para cada fila, elemento en la lista?
Alternativamente, hay una columna con número de ID de inspección. ¿Sería más eficiente dividir esto en dos tablas usando el número de ID de inspección como clave en lugar de crear una tabla apilada masiva?
craig:
¡Gracias! Siendo un novato en análisis de texto, nunca antes había usado las funciones de Coincidencia de patrones. Buena solución al problema. Definitivamente pasaré un tiempo aprendiendo sobre expresiones regulares y coincidencia de patrones.
Por cierto, ¡el análisis de texto sería un excelente tema para el seminario web Mastering JMP!
Solo jugando con las primeras 100 filas, aquí hay un mapa:
LocationsLocationsUbicaciones
Aquí hay una columna de fórmula para obtener solo los campos de comentarios:
a = :Violations;
b = "";
Pat Match( a, // full violation text
Pat Repeat(
Pat Arb() + "Comments:"
+ ( Pat Break( "|" ) | Pat Rem()) >> c // the interesting bit
+ Pat Test( // not really a test, just some JSL to build text
b = b || "|" || c; // build text here
1; // always succeed the test
)
),
NULL, // no replacement
FULLSCAN // get the final one
);
b;
El explorador de texto puede usar la nueva columna para formar grupos
clustersclusters racimos
Trazar el número de grupo para los comentarios contra el resultado de la inspección real parece prometedor; los comentarios del grupo 2 no obtuvieron calificaciones reprobatorias y los comentarios del grupo 4 fallaron. Típicamente algo como "GRASA OBSERVADA ACUMULADA EN LOS FILTROS DE LA CAMPANA DE VENTILACIÓN. DEBE LIMPIAR LOS FILTROS DE LA CAMPANA DE VENTILACIÓN" (aprobado) vs "NO LAVARSE LAS MANOS NI QUITARSE LOS GUANTES DE COMIDA" (no aprobar).
clustered by comment textclustered by comment textagrupados por texto de comentario
No creo que las filas de 145 000 sean demasiado lentas para ninguna de las ideas de análisis. Creo que probablemente querrá columnas indicadoras para cada tipo de infracción, 0 o 1. Si tiene JMP 13, puede usar el explorador de texto en los comentarios; Sugeriría ejecutar todos los comentarios, sin las descripciones constantes, juntos en un solo campo de carácter.