В статье How to Write a Spelling Corrector Питер Норвиг пишет маленький спеллчекер (21 строка на Питоне) и подробно рассказывает как он работает.
Вчера на teideal glic deisbhéalach Брайан О'Салливан написал о портировании этого кода на Хаскелл: Norvig’s spell checker and idiomatic Haskell.
Thanksgiving
5 дней назад
5 коммент.:
А вот мне интересно... Тем, кто не программирует на Питоне, понятно ли в принципе, что делает такая конструкция (зная, что edits1 -- это функция, которая принимает строку и возвращает список строк):
e2 for e1 in edits1(word) for e2 in edits1(e1)
?
Я бы сказал, что и зная python, я эту строчку не сразу понял. Не осилил с первого раза.
2 maniac: кристально ясно. Но я пишу на Хаскеле, где пишется так
[e2 | e1 <- edits1(word), e2 <- edits1(e1), known(e2)]
Очень показательно :-). Питонщикам это действительно должно быть не сразу понятно, потому что такой синтаксис появился только в 2.5, раньше писали по-другому. А хаскельщику действительно должно быть понятно сразу, потому что по его модели это и сделали, насколько я понимаю :-)
Алена, спасибо большое за ссылку на статью. Теперь доступен и перевод на русский.
Отправить комментарий