textRuleScore

applyConcept

##set_textrulescore

Description

L'action extrait des concepts à partir de documents textuels en utilisant un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). d'extraction de concepts prédéfini (généralement un fichier LI compilé). Imaginez-la comme un lecteur très attentif qui surligne exactement ce que vous cherchez, que ce soit des noms d'entreprises, des montants ou des entités personnalisées ! Elle fait partie intégrante de la suite .

Syntaxe Officielle
proc cas;
textRuleScore.applyConcept /
casOut={name="table_sortie", caslib="casuser", replace=true}
docId="id_document"
dropConcepts={"ConceptA", "ConceptB"}
factOut={name="table_faits", caslib="casuser", replace=true}
language="ENGLISH"
litiChunkSize="32K"
matchType="ALL"
model={name="modele_concept", caslib="casuser"}
parseTableIn={name="table_preanalysee", caslib="casuser"}
parseTableOut={name="nouvelle_table_preanalysee", caslib="casuser"}
ruleMatchOut={name="table_regles", caslib="casuser", replace=true}
table={name="table_entree", caslib="casuser"}
text="variable_texte";
run;
quit;

Paramètres Clés

Nom du paramètre Description
casOut Spécifie la table CAS de sortie qui contiendra les informations sur les résultats de correspondance des concepts (les fameux 'concept matches').
docId Spécifie le nom de la variable de la table CAS qui contient les identifiants uniques des documents.
dropConcepts Spécifie une liste de concepts principaux à exclure des tables de sortie CAS. Pratique pour faire le ménage si vous ne voulez pas être inondé par des concepts génériques !
factOut Spécifie la table CAS de sortie qui contiendra les informations sur les résultats de correspondance des faits (fact matches).
language Spécifie la langue utilisée dans la table d'entrée. Par défaut : 'ENGLISH'.
litiChunkSize Spécifie la taille des blocs utilisés lors du traitement d'un document (ex: '32K', '1M', 'ALL'). Réduire cette taille aide à économiser la mémoire sur les documents volumineux.
matchType Spécifie la méthode de correspondance souhaitée : 'ALL' (toutes), 'BEST' (la meilleure) ou 'LONGEST' (la plus longue).
model Spécifie la table CAS d'entrée contenant le modèle LI défini par l'utilisateur. S'il n'est pas fourni, le modèle de base intégré est utilisé par défaut.
parseTableIn Spécifie le nom d'une table CAS de documents pré-analysés générée via . Idéal pour booster les performances si vous relancez l'analyse plusieurs fois avec des règles du type CLAUS_n !
parseTableOut Spécifie une table de sortie CAS pour stocker les documents pré-analysés, à réutiliser plus tard en tant que .
ruleMatchOut Spécifie la table CAS de sortie contenant les informations sur le déclenchement des règles, qui peut être ensuite réutilisée par l'action .
table Spécifie la table CAS d'entrée principale qui contient les documents textuels bruts à analyser.
text Spécifie le nom de la variable de la table CAS qui contient le texte brut à traiter.

Préparation des données

Création des données textuelles de test

Nous allons créer une petite table contenant des phrases simples dans la bibliothèque CASUSER pour tester notre extracteur de concepts.

1DATA casuser.textes_test; LENGTH docId 8 texte $200; docId=1; texte='John Doe works at SAS Institute in Cary, NC.'; OUTPUT; docId=2; texte='Jane Smith loves coding in Python and Lua.'; OUTPUT; RUN;

Exemples d'utilisation

Application du modèle de concept de base

Cet exemple applique l'action %%applyConcept%% avec la configuration minimale requise. En omettant le paramètre %%model%%, le système est intelligent et utilise son modèle de base !

1PROC CAS; textRuleScore.applyConcept / TABLE={name='textes_test', caslib='casuser'} docId='docId' text='texte' casOut={name='concepts_out', caslib='casuser', replace=true} factOut={name='facts_out', caslib='casuser', replace=true}; RUN; QUIT;
Résultat Attendu :
Les tables 'concepts_out' et 'facts_out' sont créées dans CASUSER et contiennent respectivement les entités reconnues (personnes, lieux, organisations) et les liens logiques extraits des textes.
Extraction avancée avec filtrage de concepts et optimisation mémoire

Dans cette approche plus chirurgicale, nous configurons le type de correspondance sur la plus longue (%%LONGEST%%), divisons le traitement textuel en petits morceaux de 16 Ko (%%litiChunkSize%%), ignorons volontairement un concept spécifique (%%nlpPerson%%) et exportons les règles matchées (%%ruleMatchOut%%).

1PROC CAS; textRuleScore.applyConcept / TABLE={name='textes_test', caslib='casuser'} docId='docId' text='texte' language='ENGLISH' matchType='LONGEST' litiChunkSize='16K' dropConcepts={'nlpPerson'} casOut={name='concepts_out_adv', caslib='casuser', replace=true} ruleMatchOut={name='rulematch_out', caslib='casuser', replace=true}; RUN; QUIT;
Résultat Attendu :
Une table affinée 'concepts_out_adv' est générée sans les noms de personnes, l'empreinte mémoire est optimisée par de plus petits chunks, et une table 'rulematch_out' est créée, très utile pour déboguer le modèle linguistique.