activeLearn alJoin

Análisis de Sentimiento de Comentarios de Clientes para Entrenamiento de Modelo

Scénario de test & Cas d'usage

Contexto empresarial

Un equipo de marketing necesita preparar un conjunto de datos para entrenar un modelo de análisis de sentimiento. Tienen una tabla principal con todos los comentarios de los clientes y una tabla más pequeña donde un equipo ha etiquetado manualmente el sentimiento de un subconjunto de estos comentarios. El objetivo es unir las etiquetas de sentimiento a los comentarios correspondientes para crear un conjunto de datos de entrenamiento limpio.
Sobre el conjunto : activeLearn

Aprendizaje activo para optimizar el etiquetado de datos.

Descubrir todas las acciones de activeLearn
Preparación de datos

Se crean dos tablas: 'COMENTARIOS_CLIENTES' con un ID y el texto del comentario, y 'ANOTACIONES_SENTIMIENTO' con el ID y la etiqueta de sentimiento asignada. La tabla de anotaciones solo cubre una parte de los comentarios.

¡Copiado!
1DATA casuser.COMENTARIOS_CLIENTES;
2 LENGTH ComentarioID $ 10 Producto $ 20 Texto $ 200;
3 INPUT ComentarioID $ Producto $ Texto $;&
4 DATALINES;
5C01 Laptop 'El rendimiento es increíble'
6C02 Telefono 'La batería dura muy poco'
7C03 Tablet 'La pantalla es muy nítida'
8C04 Laptop 'Se calienta demasiado rápido'
9C05 Monitor 'No tiene suficientes puertos USB'
10;
11RUN;
12 
13DATA casuser.ANOTACIONES_SENTIMIENTO;
14 LENGTH ComentarioID $ 10 Sentimiento $ 10;
15 INPUT ComentarioID $ Sentimiento $;
16 DATALINES;
17C01 Positivo
18C02 Negativo
19C04 Negativo
20;
21RUN;

Étapes de réalisation

1
Cargar las tablas 'COMENTARIOS_CLIENTES' y 'ANOTACIONES_SENTIMIENTO' a la sesión de CAS.
¡Copiado!
1PROC CASUTIL;
2 load DATA=casuser.COMENTARIOS_CLIENTES outcaslib='casuser' casout='COMENTARIOS_CLIENTES' replace;
3 load DATA=casuser.ANOTACIONES_SENTIMIENTO outcaslib='casuser' casout='ANOTACIONES_SENTIMIENTO' replace;
4RUN;
5QUIT;
2
Realizar una unión interna (INNER JOIN) para crear una tabla de entrenamiento que contenga únicamente los comentarios que han sido etiquetados.
¡Copiado!
1PROC CAS;
2 activeLearn.alJoin /
3 TABLE={name='COMENTARIOS_CLIENTES'},
4 annotatedTable={name='ANOTACIONES_SENTIMIENTO'},
5 id='ComentarioID',
6 joinType='INNER',
7 casOut={name='DATOS_ENTRENAMIENTO', replace=true};
8RUN;
9QUIT;
3
Realizar una unión izquierda (LEFT JOIN) para crear una tabla completa para análisis exploratorio, manteniendo todos los comentarios originales, etiquetados o no.
¡Copiado!
1PROC CAS;
2 activeLearn.alJoin /
3 TABLE={name='COMENTARIOS_CLIENTES'},
4 annotatedTable={name='ANOTACIONES_SENTIMIENTO'},
5 id='ComentarioID',
6 joinType='LEFT',
7 casOut={name='COMENTARIOS_COMPLETOS', replace=true};
8RUN;
9QUIT;

Resultado esperado


Se generan dos tablas. 'DATOS_ENTRENAMIENTO' contendrá 3 filas, solo con los comentarios que tienen una etiqueta de sentimiento. 'COMENTARIOS_COMPLETOS' contendrá las 5 filas originales; las filas C03 y C05 tendrán un valor faltante (missing) en la columna 'Sentimiento', demostrando la correcta aplicación de ambos tipos de unión.