Scénario de test & Cas d'usage
Puntuación de documentos de texto basada en reglas.
Descubrir todas las acciones de textRuleScoreCrea una tabla de reseñas de clientes y un modelo de categorización simple (MCO) con términos positivos y negativos.
| 1 | DATA mycas.customer_reviews; |
| 2 | INFILE DATALINES delimiter='|'; |
| 3 | LENGTH review_id $ 10 review_text $ 500; |
| 4 | INPUT review_id $ review_text $; |
| 5 | DATALINES; |
| 6 | PROD_001|El producto es excelente, la calidad es increíble y superó mis expectativas. |
| 7 | PROD_002|Llegó roto. El servicio al cliente fue lento y poco útil. Una experiencia terrible. |
| 8 | PROD_003|Funciona como se esperaba, ni más ni menos. Es un producto aceptable. |
| 9 | PROD_004|¡Fantástico! Lo recomiendo totalmente. La entrega fue muy rápida. |
| 10 | PROD_005|La batería no dura nada y el material se siente barato. No lo volvería a comprar. |
| 11 | ; |
| 12 | RUN; |
| 13 | |
| 14 | DATA mycas.sentiment_model_mco; |
| 15 | LENGTH _term_ $32 _category_ $32; |
| 16 | INPUT _term_ $ _category_ $; |
| 17 | DATALINES; |
| 18 | excelente POSITIVO |
| 19 | increíble POSITIVO |
| 20 | fantástico POSITIVO |
| 21 | rápida POSITIVO |
| 22 | roto NEGATIVO |
| 23 | terrible NEGATIVO |
| 24 | barato NEGATIVO |
| 25 | problema NEGATIVO |
| 26 | lento NEGATIVO |
| 27 | ; |
| 28 | RUN; |
| 1 | PROC 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}; |
| 8 | RUN; |
| 1 | PROC 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='|'; |
| 11 | RUN; |
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.