Algorithmes pour la chaîne de similitudes (mieux que Levenshtein, et similar_text)? Php, Js
Où puis-je trouver les algorithmes que les valeurs de l'orthographe des égarés personnages avec plus de précision que levenshtein() et php similar_text() méthodes?
Exemple:
similar_text('jonas', 'xxjon', $similar); echo $similar; //returns 60
similar_text('jonas', 'asjon', $similar); echo $similar; //returns 60 <- although more similar!
echo levenshtein('jonas', 'xxjon'); //returns 4
echo levenshtein('jonas', 'asjon'); //returns 4 <- although more similar!
/Jonas
Qu'est-levenshtein vous donner pour "nojsa" et "nojxx" par rapport à "jonas"?
Même résultat, 4 et 4
Puis-je vous demander ce que votre objectif final est à la recherche d'un algorithme avec plus raffiné des dégradés? Votre exemple utilise des noms propres. Le réel les données que vous travaillez avec impliquent des noms ou des mots?
Je suis actuellement à la recherche d'un moyen de mesurer les similitudes pédagogique des situations de jeu. Disons que d'un étudiant tâche est de sélectionner des objets à partir d'un bassin, et de mettre ces objets dans un ordre précis (les trier par ordre alphabétique ou autre). J'ai alors besoin d'un moyen de mesurer la similarité entre les élèves d'y répondre et de le corriger...
Même résultat, 4 et 4
Puis-je vous demander ce que votre objectif final est à la recherche d'un algorithme avec plus raffiné des dégradés? Votre exemple utilise des noms propres. Le réel les données que vous travaillez avec impliquent des noms ou des mots?
Je suis actuellement à la recherche d'un moyen de mesurer les similitudes pédagogique des situations de jeu. Disons que d'un étudiant tâche est de sélectionner des objets à partir d'un bassin, et de mettre ces objets dans un ordre précis (les trier par ordre alphabétique ou autre). J'ai alors besoin d'un moyen de mesurer la similarité entre les élèves d'y répondre et de le corriger...
OriginalL'auteur Cambiata | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
Voici une solution que j'ai trouvé. Il est basé sur Tim proposition de la comparaison de l'ordre de la suite des charachters. Quelques résultats:
Je suis sûr que je n'est pas parfait, et qu'il pourrait être optimisé, mais néanmoins, il semble produire les résultats que je suis après...
Un point faible est que lorsque les cordes sont de longueur différente, il produit des résultats différents lorsque les valeurs sont inversés...
OriginalL'auteur Cambiata
S'il vous plaît, soyez prudent sur l'utilisation de string_compare :
ivanov ivan /ivanov ivan : 1 OK!
ivanov ivan2 /ivanov ivan : 1 o_O
ivanov ivan /ivanov i : 1.1363636363636 OMG!
OriginalL'auteur Solo.dmitry
En plus de levenshtein() et similar_text(), il y a aussi:
soundex(): Renvoie les quatre caractères soundex de la clé d'un mot, qui doit être la même que la clé de toute son similaire mot.
metaphone(): Similaire à soundex, et peut-être plus efficace pour vous. C'est plus précis que soundex() qu'il connaît les règles de base de la prononciation anglaise. Le metaphone clés générées sont de longueur variable.
OriginalL'auteur Mark Baker
Algorithmes pour calculer le degré d'exactitude de l'ordre des caractères dans un mot (c'est à dire son orthographe) pourrait être très différent d'un algorithme de mesure de l'ordre correct des mots dans une liste. La façon dont l'orthographe des algorithmes de gérer des omissions ou des dittography ou des transpositions peuvent ne pas s'appliquer très bien à votre cas d'utilisation.
Si vous connaissez l'ordre des éléments à l'avance, et de connaître le nombre d'éléments de trop, alors vous pouvez simplement faire une boucle par la réponse et de comparer la valeur à la position de corriger la valeur à la position et à en arriver à un pourcentage correct. Pourtant, ce serait une mesure brute, et induire en erreur, car si le but du jeu était de tester si le joueur a compris tri alphabétique, et le joueur qui s'est passé pour obtenir le premier mot mal, chaque mot peut être dans la mauvaise position, même si les mots étaient sinon corriger l'ordre alphabétique:
Donc ce que vous pourriez faire pour améliorer la précision de votre mesure dans notre situation hypothétique est-ce: en boucle par le gamer de la réponse de la liste de recherche pour voir si la valeur de la réponse est immédiatement suivi par le mot correct; à chaque fois qu'un mot est suivi par le mot correct, vous devez donner au joueur un point. Le joueur qui a produit la liste ci-dessus, serait d'obtenir 9 points sur 10 possibles et que le score serait en effet refléter avec précision le joueur à comprendre les règles de tri alphabétique.
OriginalL'auteur Tim
J'ai trouvé que Jaro-Winkler est également bon pour les fautes d'orthographe et de petites différences entre les chaînes. J'ai modifié ce code être orienté-objet:
OriginalL'auteur joshweir