La acción `crfTrain` se utiliza para entrenar un modelo de Campos Aleatorios Condicionales (CRF). Los CRF son una clase de método de modelado estadístico que a menudo se aplica en el reconocimiento de patrones y el aprendizaje automático, y se utilizan para la predicción estructurada. A diferencia de los clasificadores discretos, los CRF pueden tener en cuenta el contexto, lo que los hace muy adecuados para tareas de etiquetado de secuencias como el reconocimiento de entidades nombradas.
| Parámetro | Descripción |
|---|---|
| model | Especifica las tablas de modelado de salida. |
| nloOpts | Especifica los parámetros de optimización no lineal (OPTML). |
| table | Especifica la tabla CAS que contiene los datos de entrada para el entrenamiento. |
| target | Especifica el nombre de la variable predicha/oculta en la tabla de entrada. |
| template | Especifica la plantilla textual utilizada para extraer características del texto. |
Este bloque de código crea una tabla CAS simple llamada 'train_data'. Esta tabla contiene tokens y sus etiquetas correspondientes, que se utilizarán para entrenar el modelo CRF para el reconocimiento de entidades nombradas (NER).
| 1 | DATA mycas.train_data; |
| 2 | LENGTH token $20 label $10; |
| 3 | INFILE DATALINES dlm='|'; |
| 4 | INPUT token $ label $; |
| 5 | DATALINES; |
| 6 | John|B-PER |
| 7 | Smith|I-PER |
| 8 | lives|O |
| 9 | in|O |
| 10 | New|B-LOC |
| 11 | York|I-LOC |
| 12 | ; |
| 13 | RUN; |
Este ejemplo muestra cómo entrenar un modelo CRF con los parámetros mínimos requeridos. Utiliza la tabla 'train_data', define la columna 'label' como el objetivo y especifica una plantilla de características simple. El modelo entrenado se guarda en un conjunto de tablas con el prefijo 'crf_model'.
| 1 | PROC CAS; |
| 2 | conditionalRandomFields.crfTrain / |
| 3 | TABLE={name='train_data'}, |
| 4 | target='label', |
| 5 | template='U00:%w[0,0]', |
| 6 | model={name='crf_model', replace=true}; |
| 7 | RUN; |
Este ejemplo entrena un modelo CRF utilizando una plantilla de características más compleja que incluye unigramas y bigramas. También especifica opciones para el optimizador L-BFGS, estableciendo parámetros de regularización L1 y L2 y un número máximo de iteraciones. Los nombres de las tablas del modelo de salida se definen explícitamente.
| 1 | PROC CAS; |
| 2 | conditionalRandomFields.crfTrain / |
| 3 | TABLE={name='train_data'}, |
| 4 | target='label', |
| 5 | template='U00:%w[0,0] |
| 6 | U01:%w[0,1] |
| 7 | B', |
| 8 | model={ |
| 9 | attr={name='crf_model_attr', replace=true}, |
| 10 | feature={name='crf_model_feature', replace=true}, |
| 11 | label={name='crf_model_label', replace=true}, |
| 12 | attrfeature={name='crf_model_attrfeature', replace=true}, |
| 13 | template={name='crf_model_template', replace=true} |
| 14 | }, |
| 15 | nloOpts={ |
| 16 | algorithm='LBFGS', |
| 17 | optmlOpt={regL1=0.1, regL2=0.05, maxIters=50} |
| 18 | }; |
| 19 | RUN; |