C'est typiquement le problème du Web 3.0 / Web Sémantique qui n'a pas encore vu le jour - pour la simple et bonne raison que les solutions sont compliqués à mettre en oeuvre et pour l'instant imparfaite.
Il existe deux problèmes sous-jacents : les erreurs de saisies et la compréhension globale de la phrase.
Le premier est plutôt facile à résoudre. Si le mot ne se trouve pas dans le dictionnaire, on peut tenter de réorganiser les lettres, remplacer certaines parties, compter le nombre de lettres et piocher dans les mots existants (avec un peu d'imagination le résultat est efficace). Par la suite une optimisation possible c'est une liste A -> B pointant les mots erronées vers les bons mots.
Le second problème nécessite un réseau de neurones ou plus généralement un système de prédiction. La phrase doit être dans un premier temps découpé pour créer un ensemble de vecteurs. Par exemple (à voir si c'est optimisé) : identifier la position de chaque mot dans le dictionnaire. La valeur sera unique et permettra d'être calculé par la suite.
Pour pouvoir prendre n'importe quelle taille d'entrée de vecteurs (= nos mots), il faudrait pouvoir les digérer. Pour résoudre ce problème, il faut se tourner vers les réseaux de neurones convolutifs. Une première couche de convolution pour morceler l'ensemble des vecteurs et une deuxième couche de pooling pour réduire l'entrée (à répéter autant de fois qu'il le faut). On peut également ajouter entre les deux une couche de correction (notamment si les vecteurs sont trop lourd à cause d'un dictionnaire trop rempli). Une fois fait, ça semble bien partie pour en tirer des informations ...
La troisième étape c'est la plus compliqué. Pour la partie apprentissage, il va falloir un algorithme de sélection - généralement on utilise un algorithme génétique, ça marche très bien. Cet algorithme va proposer un réseau de neurones à chaque génération en choisissant tout d'abord des hyper-paramètres aléatoires, puis se rapprochera progressivement de la solution en faisant varier ces hyper-paramètres. Les hyper-paramètres ce sont : le nombre de couches, le nombre de neurones par couche, les poids initiaux et les biais.
Ta citation "ce sont des dizaines de neurones agencées entre eux avec un système de poids" prend tout son sens en effet. Ce que l'on calcule c'est la propagation. On réalise en faite pour chaque neurones de chaque couche, un calcul avec la couche antérieure : la première valeur multiplié par le poids du premier synapse additionné à la deuxième valeur du poids du deuxième synapse etc etc. valeur1 * poids1 + valeur2 * poids2 + ... + 1 * biais. Le biais est un poids supplémentaire pour déplacer les valeurs (ça se voit lors-ce qu'on analyse la courbe de sortie). Une fois la somme obtenu, on passe le résultat dans une fonction d'activation pour normaliser le résultat avant de l'enregistrer dans le neurone. J'ai une préférence pour la sigmoïde, le résultat sortant est obligatoirement compris entre 0 et 1 (bien pratique !).
Même si tu utilises une bibliothèque (par exemple Tensorflow pour Python), tu auras besoin d'avoir ces notions de calcul.
Bon je termine cette explication Une fois que ton algorithme génétique est en capacité de créer n'importe quel réseau de neurones (en lui passant les hyper-paramètres qu'il devra varier) et évidemment de lancer une propagation / prédiction. Il faut pouvoir lui donner une série d'entraînement ... pour chaque génération il faudrait dans l'idéal lui apprendre une centaine de cas différent. Ne pas oublier par ailleurs de modifier l'ordre d'apparition d'une génération sur l'autre (trier aléatoirement l'ensemble des échantillons), ça évitera du sur-apprentissage. Écarter également une autre série pour tester ton réseau, une fois l'entraînement terminé.
En ce qui concerne tes sorties, une bonne solution est de proposer les 14 jours suivants - une sortie de 15 (avec la date du jour). Ainsi lors-ce que le deuxième neurone de ta couche de sortie s'active à 0.7 (la meilleur prédiction de ta couche), il te retourne le timestamp de J+1. Pour affiner le résultat en fonction de la demande "avion" ou "météo", tu peux ajouter deux neurones de plus.
Il existe des chaînes sur Youtube pour apprendre les réseaux de neurones :
J'espère avoir pu orienter ta réflexion. Vu que l'on est obligé de passer par du Deep Learning, j'ai un peu de mal à voir comment intégrer une rétro-propagation ou tout autre algorithme d'auto-apprentissage à ce réseau de neurones. Si quelqu'un d'autre peut compléter mes connaissances ... incomplètes, ce serait parfait !
Bon courage.
Extraction de date - Algorithme
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
CodeWe is an open-source live code-sharing website.