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é !
/* Création de la table de données d'exemple */
data mycas.CarNominations_Basic;
infile datalines delimiter='|' missover;
length text $70;
input text$ i;
datalines;
The Ford Taurus is the World Car of the Year. |1
Hyundai won the award last year. |2
Toyota sold the Toyota Tacoma in bright green. |3
The Ford Taurus is sold in all colors except for lime green. |4
The Honda Insight was World Car of the Year in 2008. |5
;
run;
/* Création de la liste de synonymes */
data mycas.synds_Basic;
infile datalines delimiter=',';
length Term $13;
input Term $ TermRole $ Parent $ ParentRole$;
datalines;
honda insight, VEHICLE , honda, COMPANY,
ford taurus, VEHICLE, ford, COMPANY,
toyota tacoma, VEHICLE, toyota, COMPANY,
;
run;
/* Création de la liste de mots vides (stop list) */
data mycas.stopList_Basic;
infile datalines delimiter='|' missover;
length term $25 role $40;
input term$ role$;
datalines;
toyota| COMPANY
;
run;
/* Exécution de PROC TEXTMINE sans filtrage initial (ignore) */
proc textmine data=mycas.CarNominations_Basic;
doc_id i;
var text;
parse
termwgt = none
cellwgt = none
reducef = 1
entities = std
synonym = mycas.synds_Basic
stop = mycas.stopList_Basic
outterms = mycas.outterms_basic
;
run;
/* Affichage des termes extraits */
data work.outterms_basic; set mycas.outterms_basic; run;
proc print data=work.outterms_basic; title 'Termes extraits sans filtrage'; run;
1
/* Création de la table de données d'exemple */
2
DATA mycas.CarNominations_Basic;
3
INFILEDATALINES 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
;
13
RUN;
14
15
/* Création de la liste de synonymes */
16
DATA mycas.synds_Basic;
17
INFILEDATALINES 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
;
25
RUN;
26
27
/* Création de la liste de mots vides (stop list) */
28
DATA mycas.stopList_Basic;
29
INFILEDATALINES delimiter='|' missover;
30
LENGTH term $25 role $40;
31
INPUT term$ role$;
32
DATALINES;
33
toyota| COMPANY
34
;
35
RUN;
36
37
/* Exécution de PROC TEXTMINE sans filtrage initial (ignore) */
38
PROC TEXTMINEDATA=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
;
50
RUN;
51
52
/* Affichage des termes extraits */
53
DATA work.outterms_basic; SET mycas.outterms_basic; RUN;
54
PROC PRINTDATA=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é !
/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
data mycas.CarNominations_Intermediate;
infile datalines delimiter='|' missover;
length text $70;
input text$ i;
datalines;
The Ford Taurus is the World Car of the Year. |1
Hyundai won the award last year. |2
Toyota sold the Toyota Tacoma in bright green. |3
The Ford Taurus is sold in all colors except for lime green. |4
The Honda Insight was World Car of the Year in 2008. |5
;
run;
/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
data mycas.synds_Intermediate;
infile datalines delimiter=',';
length Term $13;
input Term $ TermRole $ Parent $ ParentRole$;
datalines;
honda insight, VEHICLE , honda, COMPANY,
ford taurus, VEHICLE, ford, COMPANY,
toyota tacoma, VEHICLE, toyota, COMPANY,
;
run;
/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
data mycas.stopList_Intermediate;
infile datalines delimiter='|' missover;
length term $25 role $40;
input term$ role$;
datalines;
toyota| COMPANY
;
run;
/* Exécution de PROC TEXTMINE en ignorant les déterminants et les prépositions */
proc textmine data=mycas.CarNominations_Intermediate;
doc_id i;
var text;
parse
termwgt = none
cellwgt = none
reducef = 1
entities = std
synonym = mycas.synds_Intermediate
stop = mycas.stopList_Intermediate
outterms = mycas.outterms_intermediate
;
select "det" "prep" / ignore;
run;
/* Affichage des termes extraits */
data work.outterms_intermediate; set mycas.outterms_intermediate; run;
proc print data=work.outterms_intermediate; title 'Termes après suppression des déterminants et prépositions'; run;
1
/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
2
DATA mycas.CarNominations_Intermediate;
3
INFILEDATALINES 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
;
13
RUN;
14
15
/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
16
DATA mycas.synds_Intermediate;
17
INFILEDATALINES 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
;
25
RUN;
26
27
/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
28
DATA mycas.stopList_Intermediate;
29
INFILEDATALINES delimiter='|' missover;
30
LENGTH term $25 role $40;
31
INPUT term$ role$;
32
DATALINES;
33
toyota| COMPANY
34
;
35
RUN;
36
37
/* Exécution de PROC TEXTMINE en ignorant les déterminants et les prépositions */
DATA work.outterms_intermediate; SET mycas.outterms_intermediate; RUN;
55
PROC PRINTDATA=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é !
/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
data mycas.CarNominations_Advanced;
infile datalines delimiter='|' missover;
length text $70;
input text$ i;
datalines;
The Ford Taurus is the World Car of the Year. |1
Hyundai won the award last year. |2
Toyota sold the Toyota Tacoma in bright green. |3
The Ford Taurus is sold in all colors except for lime green. |4
The Honda Insight was World Car of the Year in 2008. |5
;
run;
/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
data mycas.synds_Advanced;
infile datalines delimiter=',';
length Term $13;
input Term $ TermRole $ Parent $ ParentRole$;
datalines;
honda insight, VEHICLE , honda, COMPANY,
ford taurus, VEHICLE, ford, COMPANY,
toyota tacoma, VEHICLE, toyota, COMPANY,
;
run;
/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
data mycas.stopList_Advanced;
infile datalines delimiter='|' missover;
length term $25 role $40;
input term$ role$;
datalines;
toyota| COMPANY
;
run;
/* Exécution de PROC TEXTMINE en ignorant des types de mots et entités spécifiques */
proc textmine data=mycas.CarNominations_Advanced;
doc_id i;
var text;
parse
termwgt = none
cellwgt = none
reducef = 1
entities = std
synonym = mycas.synds_Advanced
stop = mycas.stopList_Advanced
outterms = mycas.outterms_advanced
;
select "prop" "adj" / ignore; /* Ignorer les noms propres et les adjectifs */
select "VEHICLE" / group="entities" ignore; /* Ignorer les entités de type VEHICLE */
run;
/* Affichage des termes extraits */
data work.outterms_advanced; set mycas.outterms_advanced; run;
proc print data=work.outterms_advanced; title 'Termes après filtrage avancé (noms propres, adjectifs, entités VEHICLE)'; run;
1
/* Création de la table de données d'exemple (réutilisation de l'exemple 1) */
2
DATA mycas.CarNominations_Advanced;
3
INFILEDATALINES 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
;
13
RUN;
14
15
/* Création de la liste de synonymes (réutilisation de l'exemple 1) */
16
DATA mycas.synds_Advanced;
17
INFILEDATALINES 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
;
25
RUN;
26
27
/* Création de la liste de mots vides (stop list) (réutilisation de l'exemple 1) */
28
DATA mycas.stopList_Advanced;
29
INFILEDATALINES delimiter='|' missover;
30
LENGTH term $25 role $40;
31
INPUT term$ role$;
32
DATALINES;
33
toyota| COMPANY
34
;
35
RUN;
36
37
/* Exécution de PROC TEXTMINE en ignorant des types de mots et entités spécifiques */
38
PROC TEXTMINEDATA=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 */
52
RUN;
53
54
/* Affichage des termes extraits */
55
DATA work.outterms_advanced; SET mycas.outterms_advanced; RUN;
56
PROC PRINTDATA=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é !
/* Connexion à la session CAS (si non déjà connectée) */
cas;
/* Création d'une bibliothèque CAS pour les données */
libname mycas cas sessref=casauto;
/* Création d'un fichier CSV local pour simuler des données externes */
filename temp_data temp lrecl=200;
data _null_;
file temp_data;
put 'text|i';
put 'The electric car is the future.|1';
put 'Batteries are key for green energy.|2';
put 'Old gasoline cars are slowly disappearing.|3';
put 'Green technology is innovating rapidly.|4';
put 'New car models prioritize efficiency.|5';
run;
/* Chargement des données CSV dans CAS */
proc casutil incaslib="casuser" outcaslib="casuser" ;
load casdata="temp_data.csv" casout="ExternalCarData" format=csv replace;
run;
/* Création d'une liste de synonymes enrichie pour CAS */
data mycas.synds_CAS;
infile datalines delimiter=',';
length Term $15;
input Term $ TermRole $ Parent $ ParentRole$;
datalines;
electric car, VEHICLE , electric_mobility, TECHNOLOGY,
green energy, CONCEPT, sustainability, THEME,
gasoline cars, VEHICLE, old_technology, TECHNOLOGY,
;
run;
/* Création d'une liste de mots vides étendue pour CAS */
data mycas.stopList_CAS;
infile datalines delimiter='|' missover;
length term $25 role $40;
input term$ role$;
datalines;
is| VERB
the| DET
of| PREP
car| NOUN
;
run;
/* Exécution de PROC TEXTMINE sur la table CAS avec filtrage combiné */
proc textmine data=casuser.ExternalCarData;
doc_id i;
var text;
parse
termwgt = tf
cellwgt = log
reducef = 2
entities = std
synonym = mycas.synds_CAS
stop = mycas.stopList_CAS
outterms = mycas.outterms_cas
outparent = mycas.outparent_cas
outchild = mycas.outchild_cas
outconfig = mycas.outconfig_cas
;
select "VERB" "DET" "PREP" / ignore; /* Ignorer verbes, déterminants et prépositions */
select "TECHNOLOGY" / group="entities" ignore; /* Ignorer les entités de catégorie 'TECHNOLOGY' */
run;
/* Affichage des termes extraits de la table CAS */
data work.outterms_cas; set mycas.outterms_cas; run;
proc print data=work.outterms_cas; title 'Termes extraits de la table CAS après filtrage avancé'; run;
1
/* Connexion à la session CAS (si non déjà connectée) */
2
cas;
3
4
/* Création d'une bibliothèque CAS pour les données */
5
LIBNAME mycas cas sessref=casauto;
6
7
/* Création d'un fichier CSV local pour simuler des données externes */
8
filename temp_data temp lrecl=200;
9
DATA _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';
select "TECHNOLOGY" / group="entities" ignore; /* Ignorer les entités de catégorie 'TECHNOLOGY' */
67
RUN;
68
69
/* Affichage des termes extraits de la table CAS */
70
DATA work.outterms_cas; SET mycas.outterms_cas; RUN;
71
PROC PRINTDATA=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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.