Créer les paroles de 99 bouteilles de bière sur le mur

Mauvaise utilisation créative de RapidMiner

L’un des événements les plus amusants de la conférence RapidMiner Wisdom est le concours de conception de processus d’analyse prédictive en direct « Who Wants to be a Data Miner ? » Dans ce concours, les participants doivent concevoir des processus RapidMiner pour un objectif donné en quelques minutes. Les tâches sont liées à l’analyse prédictive et à l’analyse de données en général, mais sont plutôt rares. En fait, la plupart des défis demandent des choses que RapidMiner n’a jamais été censé faire.

Lors de RapidMiner Wisdom 2016 à New York, nous avions à nouveau deux tâches préparées pour le public. Trois courageux concurrents se sont battus les uns contre les autres et contre l’horloge pour trouver la bonne solution (ou au moins quelque chose qui s’en rapproche suffisamment). La première tâche cette année était :

Créer les paroles complètes de « 99 Bottles of Beer on the Wall »

Selon Wikipédia, « 99 Bottles of Beer est une chanson folk anonyme des États-Unis datant du milieu du XXe siècle. C’est une chanson traditionnelle à la fois aux États-Unis et au Canada. Elle est populaire pour être chantée lors de longs voyages, car elle a un format très répétitif qui est facile à mémoriser, et peut prendre beaucoup de temps à chanter. »

Bien, oui. Certains disent qu’il y a de nombreux problèmes avec cette chanson mais ce n’est – bien qu’une lecture amusante – pas le sujet de ce post. (Au fait, la chanson est apparue à de nombreuses reprises dans la culture populaire également : peut-être plus particulièrement, du moins pour certains, dans le jeu Monkey Island.)

En tout cas, voici comment se déroule la chanson :

99 bouteilles de bière sur le mur, 99 bouteilles de bière.
En descendre une et la faire passer, 98 bouteilles de bière sur le mur.
98 bouteilles de bière sur le mur, 98 bouteilles de bière.
En descendre une et la faire passer, 97 bouteilles de bière sur le mur.
97 bouteilles de bière sur le mur, 97 bouteilles de bière.
En descendre une et la faire passer, 96 bouteilles de bière sur le mur.

1 bouteille de bière sur le mur, 1 bouteille de bière.
En prendre une vers le bas et la faire passer, 0 bouteilles de bière sur le mur.

Les paroles complètes peuvent être trouvées ici mais je pense que vous avez compris l’idée.

Alors, comment pouvons-nous résoudre la tâche ci-dessus avec RapidMiner ?

Démarrons d’abord avec une capture d’écran de la solution:

process

Nous commençons avec l’opérateur « Generate Data » et générons un ensemble de données aléatoires avec seulement 1 colonne et 100 exemples (faites les réglages appropriés dans les paramètres de l’opérateur). Ce n’est peut-être pas la façon la plus élégante mais l’une des façons les plus faciles dans RapidMiner pour obtenir un ensemble de données avec une structure et une taille spécifiques. Dans l’étape suivante, nous avons maintenant besoin de nombres de 1 à 100 dans une colonne supplémentaire. Encore une fois, il existe plusieurs façons d’y parvenir, mais la plus simple est probablement d’utiliser l’opérateur « Generate ID » qui fait exactement cela. Nous pouvons maintenant utiliser « Select Attributes » et supprimer les colonnes qui ont été initialement générées par « Generate Data », c’est-à-dire que nous ne gardons que notre nouvelle colonne « id ». Le résultat est un ensemble de données avec 100 lignes et les nombres 1 à 100 dans une colonne nommée « id ».

Maintenant toute la logique se passe dans l’opérateur suivant : « Générer des attributs ». Le problème principal qui doit être résolu est de savoir comment transformer la séquence de chiffres de 1 à 100 en une séquence de 99 à 0 ? C’est facile : nous pouvons simplement générer une nouvelle valeur en soustrayant de 100 le « id » actuel dans chaque ligne. En même temps, nous ajoutons le reste des paroles autour de ces nombres. Voici comment vous devez définir les paramètres de « Generate Attributes » pour y parvenir:

generate_attributes

Maintenant, vous pourriez même concaténer toutes ces nouvelles colonnes en une seule si vous le souhaitez. Je vous laisse le soin de trouver comment faire. Le résultat final après l’exécution du processus ressemble alors à la capture d’écran suivante (montrant seulement le début):

result

Si vous exécutez le processus vous-même, vérifiez également la dernière ligne. J’admets qu’on pourrait gérer cela un peu mieux puisque les paroles créées se terminent sur : « 0 bouteilles de bière sur le mur, 0 bouteilles de bière. Prenez-en une et faites-la circuler. -1 bouteilles de bière sur le mur. » Eh bien, il n’y a rien de mal à -1 bouteilles de bière pour les mathématiciens et les physiciens, mais certains systèmes informatiques pourraient ne pas aimer les nombres négatifs d’objets.
Utiliser RapidMiner pour des tâches comme celle-ci est bien sûr un peu, eh bien, étrange. Mais cela montre également à quel point l’approche visuelle de RapidMiner est flexible et puissante. D’autres ont créé des solutions dans pratiquement tous les langages de programmation de la planète, certaines plus courtes et d’autres plus longues que d’autres. Mais je préférerais toujours la solution RapidMiner au code de la plupart d’entre eux.

Vous trouverez ci-dessous le XML du processus complet. Vous pouvez l’enregistrer dans un fichier arbitraire sur votre système et utiliser « File -> Import Process… » pour l’obtenir dans RapidMiner.

Amusez-vous à essayer cela !

XML du processus :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.