?>
La acción `applyCategory` se utiliza para categorizar documentos de texto basándose en un modelo de categorización preexistente, que generalmente se encuentra en un archivo de modelo de categoría de SAS (MCO). Esta acción procesa una tabla de entrada que contiene los textos a analizar y aplica las reglas del modelo para asignar una o más categorías a cada documento. Es una herramienta fundamental en el análisis de texto para la clasificación automática de grandes volúmenes de datos no estructurados.
| Parámetro | Descripción |
|---|---|
| casOut | Especifica la tabla de salida de CAS para almacenar los resultados de la categorización. |
| docId | Especifica el nombre de la variable que actúa como identificador único para cada documento en la tabla de entrada. |
| docType | Especifica el tipo de documento a procesar. Puede ser 'TEXT' para texto plano o 'XML' para documentos con formato XML. |
| groupedMatchOut | Especifica la tabla de salida para almacenar las coincidencias agrupadas por categoría para cada documento. |
| matchDelimiter | Especifica el delimitador a utilizar para separar las múltiples coincidencias de texto en la tabla de salida `groupedMatchOut`. |
| matchOut | Especifica la tabla de salida para almacenar los detalles de las coincidencias de términos que llevaron a la categorización. |
| model | Especifica la tabla de entrada de CAS que contiene el modelo de categorización compilado (archivo MCO). |
| modelOut | Especifica la tabla de salida para almacenar el modelo de categorías utilizado. |
| scoringAlgorithm | Especifica el algoritmo de puntuación a utilizar. 'FREQUENCY' se basa en la frecuencia de las coincidencias, mientras que 'WEIGHTED' utiliza los pesos definidos en el modelo. |
| table | Especifica la tabla de entrada de CAS que contiene los documentos de texto a categorizar. |
| text | Especifica el nombre de la variable en la tabla de entrada que contiene el texto de los documentos. |
Este bloque de código crea una tabla CAS llamada `mycas.text_data` con dos columnas: `doc_id` como identificador y `text_variable` con el contenido de texto que se va a categorizar.
1 DATA mycas.text_data; 2 INFILE DATALINES delimiter='|'; 3 LENGTH doc_id $ 10 text_variable $ 300; 4 INPUT doc_id $ text_variable $; 5 DATALINES; 6 1|El nuevo software ofrece un rendimiento increíble y es muy fácil de usar. 7 2|Tengo un problema con mi factura, el servicio al cliente no ha sido de ayuda. 8 3|Las características de seguridad son impresionantes y protegen nuestros datos de manera efectiva. 9 4|El producto llegó dañado y el proceso de devolución es demasiado complicado. 10 ; 11 RUN;
Este ejemplo aplica un modelo de categoría (`mycas.category_model`) a la tabla `mycas.text_data`. Los resultados de la categorización se guardan en la tabla `mycas.categorized_results`.
| 1 | PROC CAS; |
| 2 | textRuleScore.applyCategory / |
| 3 | TABLE={caslib="mycas", name="text_data"}, |
| 4 | model={caslib="mycas", name="category_model"}, |
| 5 | docId="doc_id", |
| 6 | text="text_variable", |
| 7 | casOut={caslib="mycas", name="categorized_results", replace=true}; |
| 8 | RUN; |
Este ejemplo no solo categoriza los documentos, sino que también genera dos tablas adicionales: `mycas.matches` y `mycas.grouped_matches`. La tabla `matches` contiene una fila por cada coincidencia de regla, mientras que `grouped_matches` agrupa las coincidencias por documento y categoría, usando ';' como delimitador.
| 1 | PROC CAS; |
| 2 | textRuleScore.applyCategory / |
| 3 | TABLE={caslib="mycas", name="text_data"}, |
| 4 | model={caslib="mycas", name="category_model"}, |
| 5 | docId="doc_id", |
| 6 | text="text_variable", |
| 7 | casOut={caslib="mycas", name="categorized_results", replace=true}, |
| 8 | matchOut={caslib="mycas", name="matches", replace=true}, |
| 9 | groupedMatchOut={caslib="mycas", name="grouped_matches", replace=true}, |
| 10 | matchDelimiter=";"; |
| 11 | RUN; |