Je recherche des algorithmes de chaîne floue pour l'exemple suivant: dans une base de données de noms existants, associez les entrées au nom le mieux adapté si la précision de correspondance est supérieure au seuil d'entrée (par exemple 90%), ou NA sinonAlgorithmes de correspondance de chaîne approximative pour les noms
database = [James Bond, Michael Smith]
entrée
James L Bond->James Bond
JBondL->James Bond
Bond,James->James Bond
BandJamesk->James Bond
Jenny,Bond->N/A
Actuellement, la plupart des algorithmes comme Levenstein et ceux basés sur phonétiques comme Soundex ne peuvent pas correspondre aux noms inversés comme BondJames. Jusqu'à présent, cosinus et Jacquard donnent les meilleurs résultats, mais je cherche plus, afin que je puisse choisir le meilleur ou éventuellement combiner des algorithmes.
bonne idée Lior, merci. Une question: comment voulez-vous séparer jamesbond, sans le bénéfice des virgules ou des majuscules? – user1569897
Une façon que je pourrais penser est peut-être un algorithme qui permet 1-2 échanges/relocalisations de groupes de caractères sans aucune pénalité. (Max 2 parce qu'il pourrait y avoir trois groupes -herbertbondjames, par exemple) Je ne peux pas penser à un algorithme existant qui fait cela, ou à tout autre algorithme qui peut prendre en compte ce critère de bondjames -> jamesbond. – user1569897
Lorsque le nom de l'entrée a un mot, je concaténerais les mots composant le nom de la base de données dans différentes permutations, au lieu de le séparer, et minimiser L (u, v1 || v2 || ...)). ('' || 'indique une concaténation). –