2 réponses

il y a 4 ans par oimoci
En la posant Elodie ! Skiller est un réseau social et surtout pas un forum, ce qui implique que tu ne vois que les questions proposées ou partagées par ceux que tu suis ici.... Tu peux faire confiance aux Skilleurs pour te réorienter éventuellement vers une question similaire :)
Par ailleurs, Skiller favorise la réactivité et l'actualité de l'information dans un monde qui change très vite.... Alors, pas de frein surtout, partage tes questions avec nous !
7
il y a 4 ans par ElodieLebothlan
OK merci pour ton retour!
2
il y a 4 ans par DavidCourtinot
Je ne trouve pas ça très convaincant ! Pour être efficace, ce genre de site doit forcément avoir un moteur de recherche. Même pour toi qui gère le site, tu as intérêt à avoir des moyens d'interroger ta base de données sur le contenu de Skiller. En faisant ça, il devrait y avoir les bases d'un moteur de recherche côté utilisateur.

Un moteur de recherche intelligent n'est pas simple à implémenter et je ne m'en prétends pas capable, par contre on peut penser à des algos assez simples qui aideraient à retrouver une question. Par exemple :

- récupérer les mots de la recherche
- leur affecter à chacun un poids d'autant plus petit que le mot est fréquent sur le site (plus un mot est fréquent, moins il aidera à distinguer une question d'une autre)
- éventuellement choisir d'appliquer un poids nul aux mots interrogatifs
- il faudrait disposer d'un dictionnaire (au sens informatique) de synonymes (par exemple "meilleure" ne doit pas être considéré comme différent de "meilleur"). Si un mot possède un synonyme, le remplacer par le synonyme pour standardiser la question, sinon le laisser tel quel. Disons que c'est optionnel car je ne sais moi-même pas explicitement comment construire ça là, maintenant, mais c'est quand même bien embêtant de considérer deux mots différents juste parce qu'ils sont conjugés différemment...
- multiplier ce poids par la fréquence du mot dans la requête saisie par l'utilisateur
- pour chaque question
. récupérer les mots du titre
. trier la liste des mots de la recherche et celle des mots du titre dans l'ordre alphabétique
. pour chaque mot présent dans une liste et pas dans l'autre, ajouter ce mot avec un poids de 0 dans la liste qui ne le contient pas
. calculer le produit scalaire des deux listes
- trier les questions par le produit scalaire obtenu
- sélectionner les n premiers résultats

Un exemple concret ? L'utilisateur tape R = "Quel est le meilleur langage de programmation ?", il y a deux questions sur le site Q1 = "Qui est le meilleur pâtisser de Toulouse ?", Q2 = "Que pensez-vous de l'avenir de la programmation ?".

Je vais faire sans synonyme ici. On dégage les mots interrogatifs, et on affecte les poids (valeurs au nez pour l'exemple) :

R = { est:3, le:1, meilleur:5, langage:6, de:2, programmation:8 }
Q1 = { est:3, le:1, meilleur:5, pâtissier:8, de:2, Toulouse:8 }
Q2 = { pensez:5, vous:3, de:2, le:1, avenir:7, la:1, programmation:8 }

Pour comparer R et Q1, on doit "aligner" les deux listes (je ne trie pas par flemme mais pour la performance du code il faudrait sans doute trier) :

R = { est:3, le:1, meilleur:5, pâtissier:0, langage:6, de:2, Toulouse:0, programmation: 8}
Q1 = { est:3, le:1, meilleur:5, pâtissier:8, langage:0, de:2, Toulouse:8, programmation:0 }

Produit scalaire : R.Q1 = 3*3 + 1*1 + 5*5 + 0*8 +6*0 + 0*8 + 8*0 = 35

On fait pareil avec Q2 :

R = { pensez:0, vous:0, de:2, le:1, est:3, avenir:0, la:0, meilleur:5, langage:6, programmation:8 }
Q2 = { pensez:5, vous:3, de:2, le:1, est:0, avenir:7, la:1, meilleur:0,langage:0, programmation:8 }

R.Q2 = 0*5 + 0*3 + 2*2 + 1*1 + 3*0 + 0*7 + 0*1 + 5*0 + 6*0 + 8*8 = 69

On sélectionne donc Q2 car R.Q2 > R.Q1 ! On voit là que malgré le fait que R et Q2 ont une structure semblable, l'algo ne les a pas rapprochés car 1) il ignore la structure en triant les listes de mots 2) il s'intéresse au sens des mots en leur donnant un poids qui définit leur capacité à évoquer un sujet particulier et pas un autre.

Peut-être que ça marche magiquement avec mon exemple grâce aux valeurs numériques choisies, mais en tout cas si je devais faire un moteur de recherche simple je me lancerais sur ça. Je n'avais pas prévu de faire une réponse si longue au début... si quelqu'un a le courage de lire c'est bien :)
2
il y a 4 ans par oimoci
Merci David :) Ça c'est de la pédagogie, j'adore !

Si j'ai un peu compris, c'est exactement le fonctionnement d'elasticsearch qui devrait être la base du prochain système de recherche de Skiller. Je dis bien système...
2
il y a 4 ans par DavidCourtinot
Hum ouais c'est un peu ma tendance à refaire des choses qui existent déjà en cent fois mieux. J'ai parcouru le site (si c'est bien de celui-ci dont il s'agit www.elastic.co/products/elasticsearch) et ça a l’air d’ouvrir de nombreux horizons. Bonne chance :)
2
il y a 4 ans par SteeveLesbros
La petite astuce c'est de jouer avec les url et les tags ^^
Sinon c'est de visiter le profil de oimoci et chercher les tags en rapport avec ta question pour cibler ta recherche (vu qu'il intervient partout ^^)
3

Vous aimez Skiller?

Rejoignez la communauté.