conditionalRandomFields crfScore

Procesamiento de Contratos con Datos Sucios e Incompletos

Scénario de test & Cas d'usage

Contexto empresarial

Un bufete de abogados está digitalizando contratos antiguos. Algunos registros están vacíos, contienen caracteres especiales corruptos o formatos inusuales. Se requiere verificar que el modelo CRF no falle ante estas anomalías.
Preparación de datos

Creación de un dataset con casos borde: textos vacíos, nulos y caracteres especiales.

¡Copiado!
1DATA casuser.dirty_contracts; LENGTH _doc_id_ $20 _text_ $300; INFILE DATALINES delimiter='|'; INPUT _doc_id_ $ _text_ $; DATALINES;
2CTR_001|Contrato válido fecha 2023.
3CTR_002|
4CTR_003|.
5CTR_004|@#$%^&*() Error de escaneo
6; RUN;

Étapes de réalisation

1
Carga de tablas del modelo legal.
¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / path='legal_label.csv' casOut={name='l_label', replace=true};
4TABLE.loadTable / path='legal_attr.csv' casOut={name='l_attr', replace=true};
5TABLE.loadTable / path='legal_feature.csv' casOut={name='l_feature', replace=true};
6TABLE.loadTable / path='legal_attrfeature.csv' casOut={name='l_attrfeature', replace=true};
7TABLE.loadTable / path='legal_template.csv' casOut={name='l_template', replace=true};
8 
9RUN;
10 
2
Ejecución de crfScore sobre datos sucios.
¡Copiado!
1 
2PROC CAS;
3conditionalRandomFields.crfScore TABLE={name='dirty_contracts'} model={label={name='l_label'}, attr={name='l_attr'}, feature={name='l_feature'}, attrfeature={name='l_attrfeature'}, template={name='l_template'}} casOut={name='contracts_scored', replace=true} target='legal_entity';
4 
5RUN;
6 

Resultado esperado


La acción se ejecuta exitosamente ignorando o etiquetando como 'O' (Outside) los registros vacíos o corruptos (CTR_002, CTR_003), sin provocar una caída del sistema (crash), y etiqueta correctamente el CTR_001.