El procedimiento TEXTMINE es una herramienta poderosa para la exploración y preparación de datos textuales. Este ejemplo demuestra el uso de las opciones `SELECT` e `IGNORE` dentro del subcomando `PARSE` para controlar los términos que se incluyen o excluyen del análisis. Al especificar las partes del discurso ('prep', 'det', 'prop') y las entidades ('prop_misc') a ignorar, el usuario puede filtrar el ruido y concentrarse en los conceptos clave del texto. El ejemplo utiliza listas de sinónimos y de palabras vacías (stop list) para una preparación adicional de los datos. Los datos de entrada se crean internamente mediante un paso DATA con datalines, y los resultados se almacenan en tablas CAS (`mycas.outterms`, `mycas.outparent`, `mycas.outchild`, `mycas.outconfig`).
Análisis de datos
Type : CREACION_INTERNA
Los ejemplos utilizan datos textuales ficticios generados con un paso DATA con datalines. Las tablas de sinónimos y de palabras vacías también se crean mediante datalines.
1 Bloque de código
PROC TEXTMINE Data
Explicación : Este ejemplo inicializa el procedimiento TEXTMINE con opciones básicas para un análisis completo del texto. Crea una tabla de datos (`mycas.CarNominations_Basic`), una lista de sinónimos (`mycas.synds_Basic`) y una lista de palabras vacías (`mycas.stopList_Basic`). El procedimiento `TEXTMINE` se ejecuta luego para extraer los términos, aplicando los sinónimos y las palabras vacías, pero sin ignorar partes del discurso o entidades específicas. Los resultados se guardan en `mycas.outterms_basic` y se muestran.
¡Copiado!
/* 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 Bloque de código
PROC TEXTMINE Data
Explicación : Este ejemplo intermedio utiliza la cláusula `SELECT` con la opción `IGNORE` para excluir específicamente los determinantes ('det') y las preposiciones ('prep') del análisis. Esto permite afinar la lista de términos extraídos eliminando palabras que a menudo son poco significativas para el análisis semántico. Los datos y las listas del ejemplo anterior se reutilizan.
¡Copiado!
/* 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 Bloque de código
PROC TEXTMINE Data
Explicación : Este ejemplo avanzado muestra cómo ignorar varios tipos de partes del discurso y entidades simultáneamente. Utiliza dos cláusulas `SELECT` con la opción `IGNORE`: una para nombres propios ('prop') y adjetivos ('adj'), y otra para ignorar entidades de tipo 'VEHICLE'. La opción `group="entities"` es crucial para apuntar a entidades específicas. Esto permite un control muy fino sobre la granularidad del análisis textual, eliminando categorías enteras de términos considerados no pertinentes para un objetivo de análisis dado.
¡Copiado!
/* 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 Bloque de código
PROC TEXTMINE Data
Explicación : Este ejemplo destaca la integración con el entorno SAS Viya y el motor CAS. Comienza asegurándose de que una sesión CAS esté activa y que se defina una biblioteca `mycas`. Luego, simula la carga de datos textuales desde un archivo CSV externo (`temp_data.csv`) directamente en una tabla CAS (`casuser.ExternalCarData`) a través de `PROC CASUTIL`. El procedimiento `TEXTMINE` se aplica luego a esta tabla CAS, utilizando listas de sinónimos y palabras vacías más elaboradas, también almacenadas en CAS. Se aplican filtros combinados para ignorar partes del discurso y entidades específicas, demostrando el análisis de datos a gran escala en un entorno distribuido. Las opciones `termwgt=tf` y `cellwgt=log` se añaden para un análisis más detallado de las ponderaciones de los términos.
¡Copiado!
/* 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
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.