textRuleScore applyCategory

Análisis de Sentimiento en Reseñas de Clientes

Scénario de test & Cas d'usage

Contexto empresarial

Una empresa de comercio electrónico quiere clasificar automáticamente miles de reseñas de productos para identificar rápidamente los comentarios positivos, negativos y neutros. El objetivo es priorizar las respuestas del servicio al cliente y obtener información para la mejora del producto.
Sobre el conjunto : textRuleScore

Puntuación de documentos de texto basada en reglas.

Descubrir todas las acciones de textRuleScore
Preparación de datos

Crea una tabla de reseñas de clientes y un modelo de categorización simple (MCO) con términos positivos y negativos.

¡Copiado!
1DATA mycas.customer_reviews;
2 INFILE DATALINES delimiter='|';
3 LENGTH review_id $ 10 review_text $ 500;
4 INPUT review_id $ review_text $;
5 DATALINES;
6PROD_001|El producto es excelente, la calidad es increíble y superó mis expectativas.
7PROD_002|Llegó roto. El servicio al cliente fue lento y poco útil. Una experiencia terrible.
8PROD_003|Funciona como se esperaba, ni más ni menos. Es un producto aceptable.
9PROD_004|¡Fantástico! Lo recomiendo totalmente. La entrega fue muy rápida.
10PROD_005|La batería no dura nada y el material se siente barato. No lo volvería a comprar.
11;
12RUN;
13 
14DATA mycas.sentiment_model_mco;
15 LENGTH _term_ $32 _category_ $32;
16 INPUT _term_ $ _category_ $;
17 DATALINES;
18excelente POSITIVO
19increíble POSITIVO
20fantástico POSITIVO
21rápida POSITIVO
22roto NEGATIVO
23terrible NEGATIVO
24barato NEGATIVO
25problema NEGATIVO
26lento NEGATIVO
27;
28RUN;

Étapes de réalisation

1
Ejecutar la categorización básica para obtener la clasificación de sentimiento de cada reseña.
¡Copiado!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={caslib='mycas', name='customer_reviews'},
4 model={caslib='mycas', name='sentiment_model_mco'},
5 docId='review_id',
6 text='review_text',
7 casOut={caslib='mycas', name='sentiment_results', replace=true};
8RUN;
2
Ejecutar una categorización avanzada para obtener no solo la categoría, sino también los términos exactos que llevaron a la clasificación, generando las tablas `matchOut` y `groupedMatchOut`.
¡Copiado!
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={caslib='mycas', name='customer_reviews'},
4 model={caslib='mycas', name='sentiment_model_mco'},
5 docId='review_id',
6 text='review_text',
7 casOut={caslib='mycas', name='sentiment_results_detailed', replace=true},
8 matchOut={caslib='mycas', name='sentiment_matches', replace=true},
9 groupedMatchOut={caslib='mycas', name='sentiment_grouped_matches', replace=true},
10 matchDelimiter='|';
11RUN;

Resultado esperado


La primera etapa debe crear la tabla `sentiment_results` con `review_id` y las categorías asignadas (POSITIVO, NEGATIVO). La segunda etapa debe generar, además, las tablas `sentiment_matches` (con una fila por cada término coincidente como 'excelente' o 'roto') y `sentiment_grouped_matches` (agrupando estos términos por reseña y categoría), permitiendo un análisis detallado de la causa de cada clasificación.