Publié le :

Sélection et Ignorance de Parties du Discours et d'Entités dans PROC TEXTMINE

Ce code est également disponible en : Deutsch English Español
En attente de validation
La procédure TEXTMINE est un outil puissant pour l'exploration et la préparation de données textuelles. Cet exemple démontre l'utilisation des options `SELECT` et `IGNORE` au sein de la sous-commande `PARSE` pour contrôler les termes qui sont inclus ou exclus de l'analyse. En spécifiant les parties du discours ('prep', 'det', 'prop') et les entités ('prop_misc') à ignorer, l'utilisateur peut filtrer le bruit et se concentrer sur les concepts clés du texte. L'exemple utilise des listes de synonymes et de mots vides (stop list) pour une préparation supplémentaire des données. Les données d'entrée sont créées en interne via un DATA step avec des datalines, et les résultats sont stockés dans des tables CAS (`mycas.outterms`, `mycas.outparent`, `mycas.outchild`, `mycas.outconfig`).
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données textuelles fictives générées à l'aide d'un DATA step avec des datalines. Des tables de synonymes et de mots vides sont également créées via datalines.

1 Bloc de code
PROC TEXTMINE Data
Explication :
Cet exemple initialise la procédure TEXTMINE avec des options de base pour une analyse complète du texte. Il crée une table de données (`mycas.CarNominations_Basic`), une liste de synonymes (`mycas.synds_Basic`) et une liste de mots vides (`mycas.stopList_Basic`). La procédure `TEXTMINE` est ensuite exécutée pour extraire les termes, en appliquant les synonymes et les mots vides, mais sans ignorer de parties du discours ou d'entités spécifiques. Les résultats sont sauvegardés dans `mycas.outterms_basic` et affichés.
Copié !
1/* Création de la table de données d'exemple */
2DATA mycas.CarNominations_Basic;
3 INFILE DATALINES delimiter='|' missover;
4 LENGTH text $70;
5 INPUT text$ i;
6 DATALINES;
7 The Ford Taurus is the World Car of the Year. |1
8 Hyundai won the award last year. |2
9 Toyota sold the Toyota Tacoma in bright green. |3
10 The Ford Taurus is sold in all colors except for lime green. |4
11 The Honda Insight was World Car of the Year in 2008. |5
12 ;
13RUN;
14 
15/* Création de la liste de synonymes */
16DATA mycas.synds_Basic;
17 INFILE DATALINES delimiter=',';
18 LENGTH Term $13;
19 INPUT Term $ TermRole $ Parent $ ParentRole$;
20 DATALINES;
21 honda insight, VEHICLE , honda, COMPANY,
22 ford taurus, VEHICLE, ford, COMPANY,
23 toyota tacoma, VEHICLE, toyota, COMPANY,
24 ;
25RUN;
26 
27/* Création de la liste de mots vides (stop list) */
28DATA mycas.stopList_Basic;
29 INFILE DATALINES delimiter='|' missover;
30 LENGTH term $25 role $40;
31 INPUT term$ role$;
32 DATALINES;
33 toyota| COMPANY
34 ;
35RUN;
36 
37/* Exécution de PROC TEXTMINE sans filtrage initial (ignore) */
38PROC TEXTMINE DATA=mycas.CarNominations_Basic;
39 doc_id i;
40 var text;
41 parse
42 termwgt = none
43 cellwgt = none
44 reducef = 1
45 entities = std
46 synonym = mycas.synds_Basic
47 stop = mycas.stopList_Basic
48 outterms = mycas.outterms_basic
49 ;
50RUN;
51 
52/* Affichage des termes extraits */
53DATA work.outterms_basic; SET mycas.outterms_basic; RUN;
54PROC PRINT DATA=work.outterms_basic; title 'Termes extraits sans filtrage'; RUN;
55 
2 Bloc de code
PROC TEXTMINE Data
Explication :
Cet exemple intermédiaire utilise la clause `SELECT` avec l'option `IGNORE` pour exclure spécifiquement les déterminants ('det') et les prépositions ('prep') de l'analyse. Cela permet d'affiner la liste des termes extraits en retirant des mots souvent peu significatifs pour l'analyse sémantique. Les données et listes de l'exemple précédent sont réutilisées.
Copié !
1/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
2DATA mycas.CarNominations_Intermediate;
3 INFILE DATALINES delimiter='|' missover;
4 LENGTH text $70;
5 INPUT text$ i;
6 DATALINES;
7 The Ford Taurus is the World Car of the Year. |1
8 Hyundai won the award last year. |2
9 Toyota sold the Toyota Tacoma in bright green. |3
10 The Ford Taurus is sold in all colors except for lime green. |4
11 The Honda Insight was World Car of the Year in 2008. |5
12 ;
13RUN;
14 
15/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
16DATA mycas.synds_Intermediate;
17 INFILE DATALINES delimiter=',';
18 LENGTH Term $13;
19 INPUT Term $ TermRole $ Parent $ ParentRole$;
20 DATALINES;
21 honda insight, VEHICLE , honda, COMPANY,
22 ford taurus, VEHICLE, ford, COMPANY,
23 toyota tacoma, VEHICLE, toyota, COMPANY,
24 ;
25RUN;
26 
27/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
28DATA mycas.stopList_Intermediate;
29 INFILE DATALINES delimiter='|' missover;
30 LENGTH term $25 role $40;
31 INPUT term$ role$;
32 DATALINES;
33 toyota| COMPANY
34 ;
35RUN;
36 
37/* Exécution de PROC TEXTMINE en ignorant les déterminants et les prépositions */
38PROC TEXTMINE DATA=mycas.CarNominations_Intermediate;
39 doc_id i;
40 var text;
41 parse
42 termwgt = none
43 cellwgt = none
44 reducef = 1
45 entities = std
46 synonym = mycas.synds_Intermediate
47 stop = mycas.stopList_Intermediate
48 outterms = mycas.outterms_intermediate
49 ;
50 select "det" "prep" / ignore;
51RUN;
52 
53/* Affichage des termes extraits */
54DATA work.outterms_intermediate; SET mycas.outterms_intermediate; RUN;
55PROC PRINT DATA=work.outterms_intermediate; title 'Termes après suppression des déterminants et prépositions'; RUN;
56 
3 Bloc de code
PROC TEXTMINE Data
Explication :
Cet exemple avancé montre comment ignorer plusieurs types de parties du discours et d'entités simultanément. Il utilise deux clauses `SELECT` avec l'option `IGNORE` : une pour les noms propres ('prop') et les adjectifs ('adj'), et une autre pour ignorer les entités de type 'VEHICLE'. L'option `group="entities"` est cruciale pour cibler les entités spécifiques. Cela permet un contrôle très fin sur la granularité de l'analyse textuelle, en supprimant des catégories entières de termes considérés comme non pertinents pour un objectif d'analyse donné.
Copié !
1/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
2DATA mycas.CarNominations_Advanced;
3 INFILE DATALINES delimiter='|' missover;
4 LENGTH text $70;
5 INPUT text$ i;
6 DATALINES;
7 The Ford Taurus is the World Car of the Year. |1
8 Hyundai won the award last year. |2
9 Toyota sold the Toyota Tacoma in bright green. |3
10 The Ford Taurus is sold in all colors except for lime green. |4
11 The Honda Insight was World Car of the Year in 2008. |5
12 ;
13RUN;
14 
15/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
16DATA mycas.synds_Advanced;
17 INFILE DATALINES delimiter=',';
18 LENGTH Term $13;
19 INPUT Term $ TermRole $ Parent $ ParentRole$;
20 DATALINES;
21 honda insight, VEHICLE , honda, COMPANY,
22 ford taurus, VEHICLE, ford, COMPANY,
23 toyota tacoma, VEHICLE, toyota, COMPANY,
24 ;
25RUN;
26 
27/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
28DATA mycas.stopList_Advanced;
29 INFILE DATALINES delimiter='|' missover;
30 LENGTH term $25 role $40;
31 INPUT term$ role$;
32 DATALINES;
33 toyota| COMPANY
34 ;
35RUN;
36 
37/* Exécution de PROC TEXTMINE en ignorant des types de mots et entités spécifiques */
38PROC TEXTMINE DATA=mycas.CarNominations_Advanced;
39 doc_id i;
40 var text;
41 parse
42 termwgt = none
43 cellwgt = none
44 reducef = 1
45 entities = std
46 synonym = mycas.synds_Advanced
47 stop = mycas.stopList_Advanced
48 outterms = mycas.outterms_advanced
49 ;
50 select "prop" "adj" / ignore; /* Ignorer les noms propres et les adjectifs */
51 select "VEHICLE" / group="entities" ignore; /* Ignorer les entités de type VEHICLE */
52RUN;
53 
54/* Affichage des termes extraits */
55DATA work.outterms_advanced; SET mycas.outterms_advanced; RUN;
56PROC PRINT DATA=work.outterms_advanced; title 'Termes après filtrage avancé (noms propres, adjectifs, entités VEHICLE)'; RUN;
57 
4 Bloc de code
PROC TEXTMINE Data
Explication :
Cet exemple met en évidence l'intégration avec l'environnement SAS Viya et le moteur CAS. Il commence par s'assurer qu'une session CAS est active et qu'une bibliothèque `mycas` est définie. Ensuite, il simule le chargement de données textuelles depuis un fichier CSV externe (`temp_data.csv`) directement dans une table CAS (`casuser.ExternalCarData`) via `PROC CASUTIL`. La procédure `TEXTMINE` est ensuite appliquée à cette table CAS, en utilisant des listes de synonymes et de mots vides plus élaborées, également stockées dans CAS. Des filtres combinés sont appliqués pour ignorer des parties du discours et des entités spécifiques, démontrant l'analyse de données à grande échelle dans un environnement distribué. Les options `termwgt=tf` et `cellwgt=log` sont ajoutées pour une analyse plus détaillée des pondérations des termes.
Copié !
1/* Connexion à la session CAS (si non déjà connectée) */
2cas;
3 
4/* Création d'une bibliothèque CAS pour les données */
5LIBNAME mycas cas sessref=casauto;
6 
7/* Création d'un fichier CSV local pour simuler des données externes */
8filename temp_data temp lrecl=200;
9DATA _null_;
10 file temp_data;
11 put 'text|i';
12 put 'The electric car is the future.|1';
13 put 'Batteries are key for green energy.|2';
14 put 'Old gasoline cars are slowly disappearing.|3';
15 put 'Green technology is innovating rapidly.|4';
16 put 'New car models prioritize efficiency.|5';
17RUN;
18 
19/* Chargement des données CSV dans CAS */
20PROC CASUTIL incaslib="casuser" outcaslib="casuser" ;
21 load casdata="temp_data.csv" casout="ExternalCarData" FORMAT=csv replace;
22RUN;
23 
24/* Création d'une liste de synonymes enrichie pour CAS */
25DATA mycas.synds_CAS;
26 INFILE DATALINES delimiter=',';
27 LENGTH Term $15;
28 INPUT Term $ TermRole $ Parent $ ParentRole$;
29 DATALINES;
30 electric car, VEHICLE , electric_mobility, TECHNOLOGY,
31 green energy, CONCEPT, sustainability, THEME,
32 gasoline cars, VEHICLE, old_technology, TECHNOLOGY,
33 ;
34RUN;
35 
36/* Création d'une liste de mots vides étendue pour CAS */
37DATA mycas.stopList_CAS;
38 INFILE DATALINES delimiter='|' missover;
39 LENGTH term $25 role $40;
40 INPUT term$ role$;
41 DATALINES;
42 is| VERB
43 the| DET
44 of| PREP
45 car| NOUN
46 ;
47RUN;
48 
49/* Exécution de PROC TEXTMINE sur la table CAS avec filtrage combiné */
50PROC TEXTMINE DATA=casuser.ExternalCarData;
51 doc_id i;
52 var text;
53 parse
54 termwgt = tf
55 cellwgt = log
56 reducef = 2
57 entities = std
58 synonym = mycas.synds_CAS
59 stop = mycas.stopList_CAS
60 outterms = mycas.outterms_cas
61 outparent = mycas.outparent_cas
62 outchild = mycas.outchild_cas
63 outconfig = mycas.outconfig_cas
64 ;
65 select "VERB" "DET" "PREP" / ignore; /* Ignorer verbes, déterminants et prépositions */
66 select "TECHNOLOGY" / group="entities" ignore; /* Ignorer les entités de catégorie 'TECHNOLOGY' */
67RUN;
68 
69/* Affichage des termes extraits de la table CAS */
70DATA work.outterms_cas; SET mycas.outterms_cas; RUN;
71PROC PRINT DATA=work.outterms_cas; title 'Termes extraits de la table CAS après filtrage avancé'; RUN;
72 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright © SAS Institute Inc. All rights reserved.