Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ease coclustering of text data #526

Open
marcboulle opened this issue Jan 13, 2025 · 0 comments
Open

Ease coclustering of text data #526

marcboulle opened this issue Jan 13, 2025 · 0 comments

Comments

@marcboulle
Copy link
Collaborator

marcboulle commented Jan 13, 2025

Description

Retour béta-test V11

Avec Khiops V11, il est très simple d'exploiter des champs de type Text avec Khiops pour une analyse supervisée.
Par contre, c'est moins évident avec Khiops coclustering, alors que l'on dispose de tous les éléments fonctionnels nécessaires:

  • gestion des champs Text
  • tokenisation des Text
  • coclustering

Suggestion:

  • a minima, via une Q&A et un peu de code python, décrire comment faire
  • puis, via un helper pykhiops
  • puis si possible via une évolution de l'ergonomie de Khiops coclustering, pour faciliter l'analyse des corpus de texte

Questions/Ideas

  • s'inspirer des fonctionnalités de Patatext
  • test effectué avec Khiops, via le recodage
    • construire un dictionnaire de recodage en non supervisé
      • paramétrer la tokenisation: Words, et 10000 tokens par exemple)
      • cocher la case Build recoderde l'onglet Recoder, avec les paramètres suivants
        • décocher Keep informative variables only
        • cocher les case Keep initial * variables
        • paramétrer les options * recoding method à None
      • on peut alors avoir une représentation sparse des textes, avec la tokenisation de Khiops
        • Utiliser Deploy model avec paramétrage de Output format à Sparse
  • à terme, on pourra créer une table secondaire de n tokens à partir d'un texte, en utilisant les régles de création de tables
  • dans Khiops coclustering, ajouter des options de tokenisation des champs texte

Une piste à explorer:

  • partir du coclustering instances x variables
  • sur option, choisir de traiter les textes via une tokenisation pour les transformer en ensembles de variables
    • type de tokenisation: words, ou tokens (mais pas ngrams, très redondants et non adaptés au colustering)
  • transformation des champs de type Text en un bloc sparse de comptes par token
    • chaque variable du bloc est a traiter par le coclustering comme une variable booléenne
      • un seule valeur, donc une seul partie de variable possible, donc peu de cout de prior
      • une valeur manquante dans le bloc sparse est traitée comme une variable missing (pas de co-ocurrence à traiter)
      • une valeur présente est traitée comme une valeur répétée, autant de fois que la présence du mot
  • le bloc sparse doit être "marqué" dans le dictionnaire pour ce traitement spécial: via les méta-data?
  • à vérifier de façon théorique: le modèle de coclustering IxV devrait être équivalent au coclustering text x mots classique, au moins de façon asymptotique
  • à vérifier de façon pratique; vérifier que cela marche
  • avantages: cela permettre des traiter les rpoblèmes de coclustering I xV de façon générique, même s'il comportent un ou plusieurs champs texte

Context

  • Khiops version: V11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant