Comparaison de string pour trouver la plus proche

Signaler
-
cgandco
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
-
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

Messages postés
32
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
29 mai 2015

je pense que tu dois utiliser une fonction
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.
Messages postés
14126
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 janvier 2020
333
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.
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
27
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.
Messages postés
1
Date d'inscription
dimanche 22 février 2015
Statut
Membre
Dernière intervention
22 février 2015

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.
Whismeril
Messages postés
14126
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 janvier 2020
333
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.
cgandco
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8 > Whismeril
Messages postés
14126
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 janvier 2020

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