Publicado el :

Selección e Ignorancia de Partes del Discurso y Entidades en PROC TEXTMINE

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
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 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!
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 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!
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 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!
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 
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.
Información de copyright : Copyright © SAS Institute Inc. All rights reserved.