Corrector de llenguatge X46829


Statement
 

pdf   zip

html

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 de subllistes d’strings de manera que el primer element de cada subllista és la paraula incorrecta i la resta dels elements (un nombre variable) són sinònims correctes.

  1. Dissenya una funció dicc(ll) tal que a partir d’una llista com la indicada generi i retorni un diccionari en el que les claus són les paraules incorrectes i cadascuna d’elles té associada una llista de sinònims equivalents acceptables.
    ll = [['bonyut',  'malgirbat', 'irregular'],\
          ['sapastre', 'incompetent'],\
          ['capsigrany', 'curt', 'inhabil'],\
          ['bufanuvols', 'somiador'], \
          ['ximplet', 'beneit', 'bonhome'],\
          ['tararot', 'belluguet', 'turbulent', 'esvalotat']]
    
  2. Dissenya una funció correccio(dicc, textincorrecte) tal que donat un diccionari de sinònims com el generat a l’apartat precedent i un string amb el text que cal corregir, generi i retorni un altre string amb el text corregit. Per tal de triar quin sinònim políticament correcte escollim de la llista de sinònims corresponent, usarem el número corresponent a la posicio de la paraula en el text i calcularem el residu de dividir aquest número pel nombre de sinònims. Exemple de text incorrecte:

    ’Un bonyut que era un sapastre va anar a cal capsigrany pero el bufanuvols que era un ximplet va acabar essent un tararot’

Les funcions valen 40 i 60 punts respectivament.

Observació

Aquest problema és el problema "Corrector de llenguatge" creat per professors del departament de Ciències de la Computació amb docència a l’ETSEIB. Podeu consultar l’original a:

http://gie.cs.upc.edu/fi/temes/diccionaris/Corrector_de_llenguatge.html

Sample session
>>> ll = [['bonyut',  'malgirbat', 'irregular'],\
...       ['sapastre', 'incompetent'],\
...       ['capsigrany', 'curt', 'inhabil'],\
...       ['bufanuvols', 'somiador'], \
...       ['ximplet', 'beneit', 'bonhome'],\
...       ['tararot', 'belluguet', 'turbulent', 'esvalotat']]
>>> dicc(ll)
{'bonyut': ['malgirbat', 'irregular'], 'ximplet': ['beneit', 'bonhome'], 'sapastre': ['incompetent'], 'bufanuvols': ['somiador'], 'tararot': ['belluguet', 'turbulent', 'esvalotat'], 'capsigrany': ['curt', 'inhabil']}
>>> ti = 'Un bonyut que era un sapastre va anar a cal capsigrany ' + \
...      'pero el bufanuvols que era un ximplet va acabar essent un tararot'
>>> correccio(dicc(ll), ti)
'Un irregular que era un incompetent va anar a cal curt pero el somiador que era un bonhome va acabar essent un turbulent'
Information
Author
Professors de l'ETSEIB del departament de CS
Language
Catalan
Official solutions
Python
User solutions
Python