[issue39249] difflib SequenceMatcher 200 char length limitation for ratio calculation

2020-01-10 Thread Terry J. Reedy


Change by Terry J. Reedy :


--
resolution:  -> duplicate
stage:  -> resolved
status: open -> closed
superseder:  -> difflib SequenceMatcher ratio() still have unpredictable 
behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39249] difflib SequenceMatcher 200 char length limitation for ratio calculation

2020-01-07 Thread Tim Peters


Tim Peters  added the comment:

Try passing

autojunk=False

to the SequenceMatcher constructor.

More on that here:

https://bugs.python.org/issue31889

--
nosy: +tim.peters

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39249] difflib SequenceMatcher 200 char length limitation for ratio calculation

2020-01-07 Thread Daniel Pezoa


New submission from Daniel Pezoa :

I am using the SequenceMatcher object of the difflib library and I have noticed 
that a drastic failure occurs when the text strings exceed 200 characters

Source code:
=

from difflib import SequenceMatcher

def main():
# Throw a value of 7% when they are almost equal for having more than 200 
characters
text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual 
salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas 
que no podan desprenderse ni arrancarse sin quemarse las manos"
text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan 
tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no 
podan desprenderse ni arrancarse sin quemarse las manos"
m = SequenceMatcher(None, text1, text2)
x = m.ratio()
porcentaje = (int)(x * 100)
print("{}\n\n{}\n\n{}\n\nBad: {}%\n\n".format(text1, text2, x, porcentaje))

# Throw the expected value of 99% for having less than 200 characters
text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual 
salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas 
que no podan desprenderse ni arrancarse sin quemarse las"
text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan 
tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no 
podan desprenderse ni arrancarse sin quemarse las"
text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual 
salan tambin muchsimas flechas rodeadas de estopas alquitranadas"
text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan 
tambin muchsimas flechas rodeadas de estopas alquitranadas"
m = SequenceMatcher(None, text1, text2)
x = m.ratio()
porcentaje = (int)(x * 100)
print("{}\n\n{}\n\n{}\n\nGood: {}%".format(text1, text2, x, porcentaje))


if __name__== "__main__":
main()


Output:
==

aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin 
muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan 
desprenderse ni arrancarse sin quemarse las manos

aceite y pedir viendo que vena de la plataforma y de la cual salan tambin 
muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan 
desprenderse ni arrancarse sin quemarse las manos

0.0794044665012407

Bad: 7%


aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin 
muchsimas flechas rodeadas de estopas alquitranadas

aceite y pedir viendo que vena de la plataforma y de la cual salan tambin 
muchsimas flechas rodeadas de estopas alquitranadas

0.9800796812749004

Good: 98%

--
components: Library (Lib)
messages: 359534
nosy: Daniel Pezoa
priority: normal
severity: normal
status: open
title: difflib SequenceMatcher 200 char length limitation for ratio calculation
type: behavior
versions: Python 3.6

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com