Corrector de llenguatge¶
Cal dissenyar un sistema automàtic que sigui capaç de corregir textos de manera que substitueixi paraules considerades políticament incorrectes per sinònims acceptables. Inicialment, les paraules políticament incorrectes estan emmagatzemades en una llista d\”strings de manera que la primera paraula de cada string és la paraula políticament incorrecta i la resta de paraules (un nombre variable) són sinònims políticament correctes.
Dissenya les funcions següents i desa-les al mòdul corrector
(fitxer corrector.py):
- corrector.sinonims(llista)¶
A partir d’una llista d\”strings com la indicada retorna un diccionari en què les claus són les paraules incorrectes i cadascuna d’elles té associada una llista de sinònims equivalents acceptables.
Per exemple:
>>> linies_sinonims = """bonyut malgirbat irregular ... sapastre incompetent ... capsigrany curt inhàbil ... bufanúvols somiador ... ximplet beneit bonhome ... tararot belluguet turbulent esvalotat""" >>> llista_linies_sinonims = linies_sinonims.split('\n') >>> dicc = sinonims(llista_linies_sinonims) >>> dicc == { ... 'bonyut': ['malgirbat', 'irregular'], ... 'sapastre': ['incompetent'], ... 'capsigrany': ['curt', 'inhàbil'], ... 'bufanúvols': ['somiador'], ... 'ximplet': ['beneit', 'bonhome'], ... 'tararot': ['belluguet', 'turbulent', 'esvalotat'], ... } True
- corrector.corregeix_linia(dicc, num, text_incorrecte)¶
Donats dicc, un diccionari de sinònims com el que retorna la funció
sinonims(), num un nombre natural i text_incorrecte, un string amb el text que cal corregir, retorna un string amb el text_incorrecte corregit segons els sinònims del diccionari dicc.De tots els sinònim políticament correctes d’una paraula es tria el que ocupi la posició a la llista de sinónims calculada com el residu de la divisió de num pel nombre de sinònims.
Per exemple:
>>> text_incorrecte = 'Un bonyut que era un sapastre' >>> corregeix_linia(dicc, 0, text_incorrecte) 'Un malgirbat que era un incompetent' >>> text_incorrecte = 'Un bonyut que era un sapastre' >>> corregeix_linia(dicc, 1, text_incorrecte) 'Un irregular que era un incompetent' >>> text_incorrecte = 'Un bonyut que era un sapastre' >>> corregeix_linia(dicc, 2, text_incorrecte) 'Un malgirbat que era un incompetent'
- corrector.corregeix(dicc, text_incorrecte)¶
Donats dicc, un diccionari de sinònims com el que retorna la funció
sinonims(), i text_incorrecte, un string amb el text que cal corregir, retorna un string amb el text_incorrecte corregit segons els sinònims dels diccionari dicc.text_incorrecte és un text format per línies. Les línies són seqüències de caràcters del text acabades pel caràcter salt de línia. Cal separar el text en línies i corregir cada línia cridant la funció
corregeix_linia(). L’argument num serà el número de línia dins de text_incorrecte. Les línies es numeren a partir de zero.Per exemple:
>>> text_incorrecte = '''Un bonyut que era un sapastre ... va anar a cal capsigrany però ... el bufanúvols que era un ximplet ... va acabar essent un tararot''' >>> text_corregit = corregeix(dicc, text_incorrecte) >>> print(text_corregit) Un malgirbat que era un incompetent va anar a cal inhàbil però el somiador que era un beneit va acabar essent un belluguet
Nota
Disposes de jocs de proves al fitxer
test-corrector.txt i d’una solució al fitxer
corrector.py