dataSegment
Description
Attention, cette action est un peu comme cette vieille paire de chaussettes qu'on adore mais qu'il faut se résoudre à jeter : elle est officiellement dépréciée depuis la version 2026.02 ! L'action dataSegment regroupe les données en utilisant le clusteringLe clustering est une technique d'apprentissage non supervisé regroupant des données similaires en segments homogènes afin d'identifier des structures cachées sans étiquettes préalables. k-meansLe clustering K-means (ou algorithme des k-moyennes) est une méthode d'apprentissage automatique non supervisé qui sert à diviser des données non étiquetées en $k$ groupes distincts (clusters) selon leurs similitudes. et segmente les documents par identifiant de clusterEnsemble de nœuds (machines) interconnectés, gérés par Kubernetes, qui collaborent pour exécuter les microservices et le moteur CAS de SAS Viya, assurant haute disponibilité et passage à l'échelle.. SAS recommande désormais vivement d'utiliser les actions de remplacement modernes comme profileText et kClus pour vos travaux de text clusteringLe clustering est une technique d'apprentissage non supervisé regroupant des données similaires en segments homogènes afin d'identifier des structures cachées sans étiquettes préalables..
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | (Requis) Spécifie la table d'entrée contenant les documents à analyser. |
| docId | (Requis) Nom de la variable (de type texte ou numérique) contenant l'identifiant unique de chaque document. |
| docVectOut | (Requis) Spécifie la table CAS de sortie en mémoire destinée à stocker les vecteurs de documents. |
| casOut | Spécifie la table CAS de sortie qui stockera les informations générales de clustering. |
| conv | Spécifie la tolérance de convergence de l'algorithme k-means (la valeur par défaut est 1E-05). |
| docOut | Spécifie la table de sortie stockant les informations croisées document-terme, incluant l'ID du document, le terme et l'ID du cluster. |
| inputs | Spécifie la liste des noms des colonnes de la table d'entrée à utiliser pour le clustering. Si omis, toutes les variables numériques seront exploitées. |
| keepWords | Spécifie une table CAS d'entrée limitant l'analyse uniquement aux termes qui y figurent. (Astuce: la variable contenant les mots doit impérativement être du type varchar). |
| maxIters | Le nombre maximum d'itérations autorisées pour l'algorithme (par défaut : 10). |
| nSegment | Le nombre de clusters (k) ciblés par l'analyse k-means (par défaut : 10). |
| seed | Permet de spécifier une graine pour l'initialisation du générateur aléatoire (0 par défaut pour une valeur issue de l'horloge système). Renseignez une valeur > 0 pour assurer la reproductibilité parfaite de vos exécutions. |
| termOut | Spécifie la table de sortie en mémoire chargée de stocker les informations relatives à l'index des termes. |
| textParse | Définit les paramètres fondamentaux de parsing textuel comme la langue (ex: FRENCH), le stemming (racinisation), ou l'extraction des groupes nominaux et d'entités. |
Préparation des données
Création d'une table CAS de témoignages
Préparation d'une table CAS d'exemple contenant des commentaires et un identifiant unique, un pré-requis absolu pour exécuter l'action dataSegment.
| 1 | DATA mycas.avis_clients; |
| 2 | LENGTH id_doc 8 texte varchar(200); |
| 3 | id_doc=1; texte="J'adore ce produit, il est fantastique et de très bonne qualité."; output; |
| 4 | id_doc=2; texte="Vraiment très déçu, la qualité est mauvaise et le produit est arrivé cassé."; output; |
| 5 | id_doc=3; texte="Produit génial, je le recommande vivement à tout le monde."; output; |
| 6 | id_doc=4; texte="Service client horrible, produit nul, fuyez !"; OUTPUT; |
| 7 | RUN; |
Exemples d'utilisation
Clustering textuel de base
Utilisation simple et directe de dataSegment pour classer automatiquement nos 4 avis clients en 2 clusters sémantiques. Remarquez que la configuration textParse est soigneusement ajustée pour la langue française.
| 1 | PROC CAS; |
| 2 | smartData.dataSegment / |
| 3 | TABLE={name="avis_clients"} |
| 4 | docId="id_doc" |
| 5 | inputs={{name="texte"}} |
| 6 | nSegment=2 |
| 7 | docVectOut={name="vect_out", replace=TRUE} |
| 8 | casOut={name="cluster_out", replace=TRUE} |
| 9 | textParse={language="FRENCH", stemming=TRUE, nounGroups=FALSE}; |
| 10 | RUN; |
| 11 | QUIT; |
Résultat Attendu :
Segmentation experte avec filtrage par dictionnaire personnalisé et paramétrage algorithmique
Cette approche 'overkill' pour seulement quatre malheureuses lignes de texte illustre parfaitement les capacités avancées du paramètre 'keepWords', réduisant drastiquement le bruit du texte. On y impose aussi un maximum d'itérations, une convergence stricte et une graine aléatoire fixe.
| 1 | DATA mycas.mots_cles; |
| 2 | LENGTH term varchar(20); |
| 3 | term="produit"; OUTPUT; |
| 4 | term="qualité"; OUTPUT; |
| 5 | RUN; |
| 6 | PROC CAS; |
| 7 | smartData.dataSegment / |
| 8 | TABLE={name="avis_clients"} |
| 9 | docId="id_doc" |
| 10 | inputs={{name="texte"}} |
| 11 | keepWords={name="mots_cles"} |
| 12 | nSegment=2 |
| 13 | maxIters=50 |
| 14 | conv=1E-06 |
| 15 | seed=12345 |
| 16 | docVectOut={name="vect_out_adv", replace=TRUE} |
| 17 | casOut={name="cluster_out_adv", replace=TRUE} |
| 18 | docOut={name="doc_out_adv", replace=TRUE} |
| 19 | termOut={name="term_out_adv", replace=TRUE} |
| 20 | textParse={language="FRENCH", entities="NONE"}; |
| 21 | RUN; |
| 22 | QUIT; |