L'action `brTrain` est utilisée pour extraire des règles booléennes à partir de données textuelles. Elle fait partie de l'ensemble d'actions `boolRule` et est conçue pour identifier des combinaisons de termes qui sont prédictives de certaines catégories ou cibles dans un corpus de documents.
| Paramètre | Description |
|---|---|
| casOuts | Spécifie les tables de données qui contiennent les résultats générés par l'action. |
| docId | Spécifie la variable dans la table d'entrée qui contient l'ID du document. |
| docInfo | Spécifie les informations sur la table de documents. |
| gNegative | Spécifie le score g minimum nécessaire pour qu'un terme négatif soit considéré pour l'extraction de règles. |
| gPositive | Spécifie le score g minimum nécessaire pour un terme positif. |
| maxCandidates | Spécifie le nombre de termes candidats à sélectionner pour chaque catégorie. |
| maxTriesIn | Spécifie la valeur k-in pour la recherche des k-meilleurs dans le processus d'ensemble de termes pour la création de règles. |
| maxTriesOut | Spécifie la valeur k-out pour la recherche des k-meilleurs dans le processus d'ensemble de règles pour la création d'un jeu de règles. |
| minSupports | Spécifie le nombre minimum de documents dans lesquels un terme doit apparaître pour être utilisé dans la création d'une règle. |
| mNegative | Spécifie la valeur m pour le calcul de la précision estimée pour les termes négatifs. |
| mPositive | Spécifie la valeur m pour le calcul de la précision estimée pour les termes positifs. |
| nThreads | Spécifie le nombre de threads à utiliser par nœud. |
| table | Spécifie la table de données d'entrée pour l'extraction de règles. |
| termId | Spécifie la variable dans la table d'entrée qui contient l'ID du terme. |
| termInfo | Spécifie les informations sur la table des termes. |
| useOldNames | Spécifie s'il faut utiliser les anciens noms de variables utilisés dans HPBOOLRULE. |
Ce code crée deux tables CAS : `documents` qui contient les informations sur les documents et leurs catégories, et `terms_in_docs` qui mappe les termes aux documents. Ces tables sont nécessaires pour exécuter l'action `brTrain`.
| 1 | PROC CAS; |
| 2 | DATA casuser.documents; |
| 3 | INFILE DATALINES delimiter=','; |
| 4 | INPUT doc_id varchar(10) category varchar(20); |
| 5 | DATALINES; |
| 6 | doc1,cat1 |
| 7 | doc2,cat1 |
| 8 | doc3,cat2 |
| 9 | doc4,cat2 |
| 10 | doc5,cat1 |
| 11 | ; |
| 12 | RUN; |
| 13 | |
| 14 | DATA casuser.terms_in_docs; |
| 15 | INFILE DATALINES delimiter=','; |
| 16 | INPUT doc_id varchar(10) term_id varchar(10); |
| 17 | DATALINES; |
| 18 | doc1,term1 |
| 19 | doc1,term2 |
| 20 | doc2,term1 |
| 21 | doc2,term3 |
| 22 | doc3,term2 |
| 23 | doc3,term4 |
| 24 | doc4,term4 |
| 25 | doc4,term5 |
| 26 | doc5,term1 |
| 27 | doc5,term5 |
| 28 | ; |
| 29 | RUN; |
| 30 | QUIT; |
Cet exemple montre comment extraire des règles booléennes en utilisant les paramètres minimaux requis. Il utilise la table `terms_in_docs` comme entrée principale et la table `documents` pour obtenir les informations sur les cibles.
| 1 | PROC CAS; |
| 2 | ACTION boolRule.brTrain / |
| 3 | TABLE={name='terms_in_docs'}, |
| 4 | docId='doc_id', |
| 5 | termId='term_id', |
| 6 | docInfo={ |
| 7 | TABLE={name='documents'}, |
| 8 | id='doc_id', |
| 9 | targets={'category'} |
| 10 | }, |
| 11 | casOut={name='rules_output', replace=true}; |
| 12 | RUN; |
| 13 | QUIT; |
Cet exemple plus détaillé ajuste plusieurs paramètres pour affiner le processus d'extraction de règles. Il définit des seuils pour les scores g (`gPositive`, `gNegative`), le support minimum des termes (`minSupports`), et contrôle le processus de recherche avec `maxCandidates`, `maxTriesIn` et `maxTriesOut`. Les résultats, incluant les règles, les termes des règles et les termes candidats, sont sauvegardés dans des tables de sortie distinctes.
| 1 | PROC CAS; |
| 2 | ACTION boolRule.brTrain / |
| 3 | TABLE={name='terms_in_docs'}, |
| 4 | docId='doc_id', |
| 5 | termId='term_id', |
| 6 | docInfo={ |
| 7 | TABLE={name='documents'}, |
| 8 | id='doc_id', |
| 9 | targets={'category'}, |
| 10 | targetType='MULTICLASS' |
| 11 | }, |
| 12 | gPositive=5, |
| 13 | gNegative=5, |
| 14 | minSupports=1, |
| 15 | maxCandidates=100, |
| 16 | maxTriesIn=50, |
| 17 | maxTriesOut=20, |
| 18 | casOut={ |
| 19 | rules={name='detailed_rules', replace=true}, |
| 20 | ruleTerms={name='detailed_rule_terms', replace=true}, |
| 21 | candidateTerms={name='candidate_terms', replace=true} |
| 22 | }; |
| 23 | RUN; |
| 24 | QUIT; |
Un hôpital souhaite automatiser la pré-classification des dossiers patients en fonction des symptômes notés dans les rapports textuels pour diriger les patients vers le bon serv...
Une entreprise de cybersécurité analyse des milliers d'emails. Le volume de mots est énorme, il faut donc limiter le bruit en filtrant agressivement les termes candidats et en i...
Le service client veut comprendre ce qui *n'est pas* un problème urgent. L'analyse se concentre sur l'extraction de règles négatives et l'ajustement de la recherche heuristique.