вторник, мая 15, 2007

Маленький спеллчекер

В статье How to Write a Spelling Corrector Питер Норвиг пишет маленький спеллчекер (21 строка на Питоне) и подробно рассказывает как он работает.
Вчера на teideal glic deisbhéalach Брайан О'Салливан написал о портировании этого кода на Хаскелл: Norvig’s spell checker and idiomatic Haskell.

5 коммент.:

Ivan Sagalaev комментирует...

А вот мне интересно... Тем, кто не программирует на Питоне, понятно ли в принципе, что делает такая конструкция (зная, что edits1 -- это функция, которая принимает строку и возвращает список строк):

e2 for e1 in edits1(word) for e2 in edits1(e1)

?

Василий комментирует...

Я бы сказал, что и зная python, я эту строчку не сразу понял. Не осилил с первого раза.

migmit комментирует...

2 maniac: кристально ясно. Но я пишу на Хаскеле, где пишется так
[e2 | e1 <- edits1(word), e2 <- edits1(e1), known(e2)]

Ivan Sagalaev комментирует...

Очень показательно :-). Питонщикам это действительно должно быть не сразу понятно, потому что такой синтаксис появился только в 2.5, раньше писали по-другому. А хаскельщику действительно должно быть понятно сразу, потому что по его модели это и сделали, насколько я понимаю :-)

Didro комментирует...

Алена, спасибо большое за ссылку на статью. Теперь доступен и перевод на русский.