Comparaison de string pour trouver la plus proche

odul39 - 21 févr. 2015 à 18:27
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 - 24 févr. 2015 à 16:11
Bonjour,

Je suis débutant en programmation, après plusieurs recherche je trouve comment comparer deux chaines de plusieurs manières mais aucunes ne me convient.

Ce que je souhaite faire :
je reçoit un tableau de string contenant des désignations de produit, que je souhaite comparer au contenu d'un autre tableau de string pour identifier la référence d'article s'en rapprochant le plus.

Par exemple je reçoit "Etui pour IPhone 4S cuir noir avec rabat"

Je souhaite que parmi mon autre tableau :
qui contient par exemple :
"Etui IPhone 5"
"Etui IPhone 4S noir"
"Etui 4S cuir noir"
"Etui pour IPhone 6 cuir beige avec rabat"

ressorte le troisième "Etui 4S cuir noir"

Que dois je utiliser pour comparer des phrases et savoir celles qui s'en rapproche le plus?

5 réponses

chamyl2000 Messages postés 32 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 29 mai 2015
21 févr. 2015 à 18:29
je pense que tu dois utiliser une fonction
0
Oui mais laquelle?
Je ne vois pas trop comment procéder, j'ai penser à utiliser String.Split et après String.Compare mais je suis pas sûr que ce soit le plus approprié.

Je me tourne vers vous pour une piste.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
22 févr. 2015 à 06:00
Bonjour,

Ce que je ferais comme ça:
-1 je splite la phrase de recherche avec l'espace comme séparateur de façon à avoir un tableau avec chaque mot.
-2 pour chaque mot clé, je vérifie s'il est dans une des descriptions, avec string.Contains ou une Regex (si tu veux t'afranchir de la casse).
-3 enfin je retourne la description qui a le plus d'occurences.
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
22 févr. 2015 à 18:41
Bonsoir

Pas aussi simple que ça ton problème, le comptage d'occurrence ne suffira pas, car dans l'exemple que tu donnes c'est "Etui pour IPhone 6 cuir beige avec rabat" qui sera choisi car elle comporte 6 mots de la phrase du référence, alors que "Etui 4S cuir noir" n'en compte que 4, comme "Etui IPhone 4S noir" d'ailleurs.

Il faudrait ajouter une notion de pondération aux mots.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
odul39 Messages postés 1 Date d'inscription dimanche 22 février 2015 Statut Membre Dernière intervention 22 février 2015
22 févr. 2015 à 19:01
Effectivement je pense qu'il faut pouvoir donner de l'importance a certain mot clé.

Si j'effectue une liste et que je compare à cette liste mes mots après le Split, je pourrais par exemple compter pour deux occurrences les mots clés trouvés.
Quand pensez vous?

Je trouve tout cela quand même assez lourd.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
22 févr. 2015 à 19:10
Non tu fais un dictionnaire avec le mot et son poids, pour chaque phrase tu fais une liste des couples trouvés et à la fin tu additionnes les poids.
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
24 févr. 2015 à 16:11
Bonjour,

pour avoir un peu plus facile, pourquoi ne pas retirer les mots qui n'ont pas d'importance de ta liste de comparaison et laisser les autres avec un poids égal pour tous ?

bonne journée
0
Rejoignez-nous