L'action `crfScore` est utilisée pour évaluer des documents en utilisant un modèle de Champs Aléatoires Conditionnels (CRF) préalablement entraîné. Elle applique le modèle CRF aux données textuelles d'entrée pour prédire des séquences d'étiquettes, ce qui est couramment utilisé pour des tâches telles que la reconnaissance d'entités nommées (NER). L'action génère une table de sortie contenant les documents avec les étiquettes prédites pour chaque token.
| Paramètre | Description |
|---|---|
| casOut | Spécifie la table de sortie CAS pour stocker les données étiquetées. Ce paramètre est obligatoire. |
| model | Spécifie les tables CAS contenant le modèle CRF entraîné. Ce paramètre est obligatoire et inclut les sous-paramètres pour les attributs, les caractéristiques, les étiquettes et le template du modèle. |
| table | Spécifie la table CAS d'entrée contenant les données à évaluer. Ce paramètre est obligatoire. |
| target | Spécifie le nom de la variable de prédiction (étiquette cachée) dans la table de sortie. Ce paramètre est obligatoire. |
Ce bloc de code crée une table CAS nommée `score_data` contenant des phrases à évaluer. Chaque phrase est un document distinct identifié par un `doc_id`.
| 1 | DATA score_data; |
| 2 | LENGTH text $200; |
| 3 | doc_id=1; text='Le Dr. Dupont travaille à Paris.'; OUTPUT; |
| 4 | doc_id=2; text='Mme. Martin a appelé SAS Institute.'; OUTPUT; |
| 5 | RUN; |
| 6 | |
| 7 | PROC CASUTIL; |
| 8 | load DATA=score_data out=score_data caslib='casuser' replace; |
| 9 | QUIT; |
Cet exemple montre comment utiliser l'action `crfScore` pour évaluer des documents en utilisant un modèle CRF déjà chargé (`crf_model_tables`). La table de sortie `crf_scored_output` contiendra les prédictions.
| 1 | PROC CAS; |
| 2 | ACTION conditionalRandomFields.crfScore / |
| 3 | TABLE={caslib='casuser', name='score_data'}, |
| 4 | model={label={name='crf_model_label', caslib='casuser'}, attr={name='crf_model_attr', caslib='casuser'}, feature={name='crf_model_feature', caslib='casuser'}, attrfeature={name='crf_model_attr_feature', caslib='casuser'}, template={name='crf_model_template', caslib='casuser'}}, |
| 5 | casOut={caslib='casuser', name='crf_scored_output', replace=true}, |
| 6 | target='predicted_label'; |
| 7 | RUN; |
| 8 | QUIT; |
Cet exemple illustre un appel complet à `crfScore`, en spécifiant explicitement les noms et les caslibs pour chaque composant du modèle CRF. Il charge d'abord les tables du modèle (`crf_model_*`) et les données de scoring (`score_data`) dans la caslib `casuser`, puis exécute le scoring. La table de sortie `crf_scored_output` est créée pour stocker les résultats, incluant la colonne `predicted_label` qui contient les étiquettes prédites.
| 1 | PROC CAS; |
| 2 | /* Assurez-vous que les tables du modèle (crf_model_label, crf_model_attr, etc.) et la table de données (score_data) sont chargées dans la caslib 'casuser' */ |
| 3 | conditionalRandomFields.crfScore / |
| 4 | TABLE={name='score_data', caslib='casuser'}, |
| 5 | model={ |
| 6 | label={name='crf_model_label', caslib='casuser'}, |
| 7 | attr={name='crf_model_attr', caslib='casuser'}, |
| 8 | feature={name='crf_model_feature', caslib='casuser'}, |
| 9 | attrfeature={name='crf_model_attr_feature', caslib='casuser'}, |
| 10 | template={name='crf_model_template', caslib='casuser'} |
| 11 | }, |
| 12 | casOut={name='crf_scored_output', caslib='casuser', replace=true}, |
| 13 | target='predicted_label'; |
| 14 | RUN; |
| 15 | |
| 16 | /* Afficher les résultats du scoring */ |
| 17 | TABLE.fetch / TABLE={caslib='casuser', name='crf_scored_output'}; |
| 18 | RUN; |
| 19 | QUIT; |