O trabalho será baseado no código em Python para cálculo da distância de Levenshtein entre duas strings desenvolvido pelo Prof. Andrew McCallum. O trabalho deve ser desenvolvido totalmente em Python em grupos de no máximo 2 alunos. A data de entrega é 27/10/08 (até às 23:59h). O trabalho pode ser entregue por e-mail.
O primeiro passo é baixar e instalar o Python e baixar o módulo stredit.py desenvolvido pelo Prof. Andrew McCallum. Este módulo contém duas funções: stredit e stredit2. A primeira é mais curta e fácil de entender, mas calcula apenas a distância e não o alinhamento. A segunda calcula o alinhamento e a distância, colocando um * em cada posição da tabela que faz parte do alinhamento. Exemplo:
$ python
>>> import stredit
>>> stredit.stredit2('tom sawyer', 'thomas sawer')
t o m s a w y e r
0 1 2 3 4 5 6 7 8 9 10
t 1 * 0 1 2 3 4 5 6 7 8 9
h 2 * 1 1 2 3 4 5 6 7 8 9
o 3 2 * 1 2 3 4 5 6 7 8 9
m 4 3 2 * 1 2 3 4 5 6 7 8
a 5 4 3 * 2 2 3 3 4 5 6 7
s 6 5 4 * 3 3 2 3 4 5 6 7
7 6 5 4 * 3 3 3 4 5 6 7
s 8 7 6 5 4 * 3 4 4 5 6 7
a 9 8 7 6 5 4 * 3 4 5 6 7
w 10 9 8 7 6 5 4 * 3 * 4 5 6
e 11 10 9 8 7 6 5 4 4 * 4 5
r 12 11 10 9 8 7 6 5 5 5 * 4
4
A função também pode ser usada para calcular a distância entre duas seqüências de palavras, representadas por listas. Por exemplo:
>>> stredit.stredit2(['He', 'quickly', 'ran', 'to', 'the', 'store'], ['He', 'walked', 'to', 'the', 'grocery', 'store'])
He qui ran to the sto
0 1 2 3 4 5 6
He 1 * 0 * 1 2 3 4 5
wal 2 1 1 * 2 3 4 5
to 3 2 2 2 * 2 3 4
the 4 3 3 3 3 * 2 3
gro 5 4 4 4 4 * 3 3
sto 6 5 5 5 5 4 * 3
3
O trabalho tem duas partes: