.. currentmodule:: corrector 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 :mod:`corrector` (fitxer :file:`corrector.py`): .. py:function:: 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: .. literalinclude:: test-corrector.txt :language: pycon :start-after: ---- sinonims :end-before: ---- fi sinonims .. py:function:: corregeix_linia(dicc, num, text_incorrecte) Donats `dicc`, un diccionari de sinònims com el que retorna la funció :func:`~corrector.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: .. literalinclude:: test-corrector.txt :language: pycon :start-after: ---- corregeix_linia :end-before: ---- fi corregeix_linia .. py:function:: corregeix(dicc, text_incorrecte) Donats `dicc`, un diccionari de sinònims com el que retorna la funció :func:`~corrector.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ó :func:`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: .. literalinclude:: test-corrector.txt :language: pycon :start-after: ---- _corregeix :end-before: ---- fi _corregeix .. note:: Disposes de jocs de proves al fitxer :download:`test-corrector.txt` i d'una solució al fitxer :download:`corrector.py`