La acción `brScore` del conjunto de acciones `boolRule` se utiliza para puntuar datos de texto aplicando un conjunto de reglas booleanas predefinidas. Estas reglas, generalmente generadas por la acción `brTrain`, se aplican a los documentos de entrada para determinar si cumplen con los criterios especificados. Es una herramienta fundamental en el text mining para categorizar o filtrar documentos según patrones de términos específicos, identificando qué documentos satisfacen qué reglas.
| Parámetro | Descripción |
|---|---|
| casOut | Especifica la tabla de datos de salida que contendrá los resultados de la coincidencia de reglas (si un documento satisface una regla). |
| docId | Especifica la variable en la tabla de datos de entrada (parámetro `table`) que contiene el ID del documento. |
| nThreads | Especifica el número de hilos (threads) que se utilizarán por nodo. El valor debe ser un entero. |
| ruleTerms | Especifica la tabla de datos que contiene los términos de cada regla, generada por la acción de entrenamiento (`brTrain`). |
| table | Especifica la tabla de datos de entrada que se va a puntuar. |
| termId | Especifica la variable en la tabla de datos de entrada (parámetro `table`) que contiene el ID del término. |
| useOldNames | Especifica si se deben usar los nombres de variable antiguos utilizados en el procedimiento HPBOOLRULE. |
Primero, creamos dos tablas en CAS. La primera, `text_data`, contiene los datos de texto que queremos puntuar, con un ID de documento y un ID de término. La segunda, `rule_data`, define las reglas booleanas que se aplicarán. Cada fila en `rule_data` representa un término dentro de una regla específica.
| 1 | PROC CAS; |
| 2 | DATA mycas.text_data; |
| 3 | INFILE DATALINES delimiter=','; |
| 4 | INPUT docid termid $; |
| 5 | DATALINES; |
| 6 | 1,t1 |
| 7 | 1,t2 |
| 8 | 2,t1 |
| 9 | 2,t3 |
| 10 | 3,t2 |
| 11 | 3,t4 |
| 12 | ; |
| 13 | RUN; |
| 14 | |
| 15 | DATA mycas.rule_data; |
| 16 | INFILE DATALINES delimiter=','; |
| 17 | INPUT _ruleid_ $ _term_ $; |
| 18 | DATALINES; |
| 19 | R1,t1 |
| 20 | R1,t2 |
| 21 | R2,t3 |
| 22 | R2,t4 |
| 23 | ; |
| 24 | RUN; |
| 25 | QUIT; |
Este ejemplo utiliza la acción `brScore` para puntuar los documentos en `text_data` basándose en las reglas definidas en `rule_data`. La tabla de salida `scored_documents` contendrá los resultados, indicando qué documentos cumplen con qué reglas.
| 1 | PROC CAS; |
| 2 | ACTION boolRule.brScore / |
| 3 | TABLE={name='text_data'}, |
| 4 | docId='docid', |
| 5 | termId='termid', |
| 6 | ruleTerms={name='rule_data'}, |
| 7 | casOut={name='scored_documents', replace=true}; |
| 8 | RUN; |
| 9 | QUIT; |
En este ejemplo, no solo realizamos la puntuación, sino que también utilizamos la acción `fetch` para mostrar el contenido de la tabla de resultados. Esto nos permite verificar qué documentos coincidieron con las reglas. La regla R1 requiere los términos 't1' Y 't2', mientras que la regla R2 busca 't3' O 't4' (comportamiento por defecto).
| 1 | PROC CAS; |
| 2 | ACTION boolRule.brScore / |
| 3 | TABLE={name='text_data', vars={'docid', 'termid'}}, |
| 4 | docId='docid', |
| 5 | termId='termid', |
| 6 | ruleTerms={name='rule_data', vars={'_ruleid_', '_term_'}}, |
| 7 | casOut={name='scored_documents_details', replace=true}; |
| 8 | RUN; |
| 9 | |
| 10 | ACTION TABLE.fetch / TABLE='scored_documents_details'; |
| 11 | RUN; |
| 12 | QUIT; |