Une société de smartphone vous engage pour programmer un logiciel qui permet que lorsqu'un utilisateur écrit un message, vous lui proposez à chaque mot qu'il écrit, le mot qui est potentiellement le suivant. Pour ce faire, vous devez analyser des phrases que l'utilisateur a déjà écrites pour connaitre le mot le plus probable qu'il va utiliser par la suite.
Vous devez donc coder une fonction predic(lst, mot)
qui prend en entrée une liste (où chaque élément de la liste est une phrase (un string) qui a déjà été écrite par l'utilisateur) et un mot qui est également un string. Celle-ci doit renvoyer un dictionnaire qui contient uniquement les mots qui sont apparus dans la phrase après le mot donné en input et le nombre de fois où c'est arrivé. Cela permettra par la suite à un autre programmeur d'utiliser ce dictionnaire pour proposer les mots les plus probables.
Exemple :
lst = ["bonjour, j'écris un message", "un message a été écrit", "un oiseau est venu se poser sur un arbre"] predict(lst, "un") #return {'message': 2, 'oiseau': 1, 'arbre': 1}
- Attention :
- Votre code doit gérer le cas où il reçoit une simple liste vide (cas où c'est la première fois que l'utilisateur écrit avec ce smartphone)
- Vous ne devez pas gérer les majuscules et les symboles spéciaux (ex : !, ?, ...)
- Pour faciliter le problème, il n'y a pas d'espace en début et fin de phrase.
rappel : Vous pouvez utiliser la fonction split() qui permet de split un string au niveau des espaces pour donner une liste de strings.
Exemple :
string = "a b c d efg hij" lst = string.split() # lst = ["a","b","c","d","efb", "hij"]