2014-05-15 3 views
2

J'ai vérifié les documents de difflib et je suis confus sur la façon dont difflib.SequenceMatcher.ratio() fonctionne réellement. Considérez ceci:Travail des méthodes set_seq1 et set_seq2, difflib python

s = difflib.SequenceMatcher(None, "hey here" , "hey there").ratio() 
print s 

donne s = 0.9411764705882353
Je voulais savoir exactement comment il est calculé. Les 2 chaînes sont comparées en regardant en fait à l'écart d'une chaîne other.for 2 cordes WRT un et b Les docs disent:

différences sont calculées comme « qu'est-ce que nous devons faire pour « un 'pour le changer en' b '? "

Et il y a quelque chose comme:

pour x dans b, B2J [x] est une liste des indices (en b) au cours de laquelle x apparaît; les éléments indésirables n'apparaissent pas

Veuillez expliquer ci-dessus l'exemple ci-dessus de s.

+0

On dirait que vous devriez utiliser ' '' au lieu de ' "'Regardez:. ' difflib.SequenceMatcher (None, 'hey il', 'Hé') rapport() ' est exacly 1.0 –

+0

son." hey here "et" hey there ", les citations ne font pas de différence, vous avez tapé les mauvais mots .. –

Répondre

1

De la documentation:

où T est le nombre total d'éléments dans les deux séquences, et M est le nombre de correspondances, ceci est 2,0 * M/T.

Dans ce cas, T est 17 parce que la première chaîne a 8 caractères et la deuxième chaîne a 9. M est 8 parce que huit caractères de la première chaîne correspondent aux caractères de la seconde. 2 * 8/17 est égal à 0,9411764705882353.

Questions connexes