О смягчении нравов

Технический университет Дармштадта, середина семестра. На лекции по “системам обработки естественного языка” (краткий пересказ документации к библиотеке NLTK) рассматривается вот такой пример:

task64

В аудитории присутствует где-то десять будущих компьютерных филологов и полторы сотни будущих компьютерных программистов. С филологами ладно, в конце концов, вся эволюция вычислительной техники была направлена на то, чтобы даже филолог мог решать свои профессиональные задачи (”Есть ли в русском языке слово, содержащее три е подряд?”) с помощью компьютера – а вот программиста, который бы предложил вот так искать слова, соответствующие последовательности нажатий кнопок на клавиатуре мобильного телефона, 20 лет назад просто избили бы ногами в подворотне. Десять лет назад все обошлось бы косым взглядом с легким налетом “пассивной агрессии”. Сейчас такое можно показывать студентам и никто, кажется, не считает этот подход зазорным.

15 комментариев

  1. Виктор пишет:

    А как было бы правильно? Я так понимаю вам не понравилось что это тупой перебор? Я довольно далек от этого просто

    • Если нам достаточно поискать слова, соответствующие регекспу, только один раз – то сойдет, хотя можно было написать так:

      print([ w for w in nltk.corpus.words.words("en") if re.search(regexp, w.lower()) ])

      Если же речь заходит о Т9 и относительно частом поиске слов – то желательно построить префиксное дерево (возможно, с какими-то дополнениями – например, в настоящем Т9 должна учитываться частота встречаемости слов). Это вполне нормальный сюжет для курса типа “Алгоритмы и структуры данных”.

      • Виктор пишет:

        Спасибо я многое не понял, но про частоту использования тоже сразу подумал. А тупо нельзя потому что ресурсы жрутся, медленно ищет или менее точно подбирает? Скорее всего все вместе взятое ))

  2. KARPOLAN пишет:

    Зато понятно как под другие кнопки код менять, гуманитарии осилят.

    Вообще отличный пример как правильно делать примеры для обучения и как не надо делать в продакшене ;)

    • Ты недооцениваешь гуманитариев (нормальных). Они в большинстве своем не тупые, а, так сказать, “педагогически запущенные”.

      Пример для обучения, негодный для продакшена – очевидно плохой и неправильный.

      • kettle пишет:

        А вам не кажется, что это пример не на разбор Т9, а на поиск регулярными выражениями?
        delay(1000) тоже не самый лучший пример из best practices, поэтому надо сразу рассказывать про таймеры, ожидания событий/прерываний и т.д.?

        • Можно придумать 100500 задач, где регулярные выражения будут более уместны, чем здесь.

          • kettle пишет:

            Дерзайте!
            А пока вы будете писать самый лучший курс по информатике, ознакомьтесь с учебниками геометрии для 7-11 классов под редакцией Атанасяна и под редакцией Колмогорова. Насладитесь насколько четко и последовательно структурирован материал у Колмогорова, а потом сходите с ним в обычную среднюю школу и ахренейте на всю голову, насколько тяжело по нему учить среднестатистического долбоклюя среднего возраста.

            • Учебник Колмогорова, если рассматривать его в качестве учебника для средней школы, а не памятника педагогической мысли третьей четверти XX века, – говно в сравнении даже с дореволюционным Киселевым.

              • kettle пишет:

                Я ошибся, не Колмогорова, а Погорелова.

                ps.
                Киселев, говорите… т.е. построение прямого угла по линейке это, по-вашему, збсь?

            • savant пишет:

              учился я по этому учебнику. более-менее в геометрию я начал въезжать только в процессе курса аналитической геометрии в универе.