Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Category:

О смягчении нравов, продолжение

Поиграл тут еще с некоторыми примерами от NLTK. Был неприятно удивлен производительностью и тем, как эта штука жрала память, урча маянезиком. Я пока особо не лез во внутренности nltk.probability.FreqDist (подозреваю, что во всем виноват этот класс), но кажется, это довольно примитивная обертка над обычным ассоциативным массивом – так что я удивлен вдвойне тем, что на небольшом, в общем-то, наборе данных отожралось 2-3 гигабайта памяти “на ровном месте”. Задача в целом довольно тупая – надо найти в тексте наиболее часто встречающиеся последовательности из нескольких подряд идущих букв (это называется “символьные N-граммы” и иногда даже используется).

Задача в общем-то тривиальная, и на любом нормальном языке программирования решается почти элементарно – я оценил бы простое решение (без поддержки Unicode, только для одного-двух языков, etc) на plain C где-то в пару часов работы. Расход памяти – небольшой, сравнимый с объемом данных – думаю, что в мегабайт даже можно уложиться. Скорость работы – ну не знаю, сколько там времени надо на проход по массиву? Ну да, я понимаю, что показывать NLTK программистам нельзя – но вот я уже как-то сомневаюсь, что с его помощью можно решать задачи филологов.

Но самое важное – запускали мы это на Macbook Air 2015, кажется, года – и до вчерашнего дня его хозяйка не знала, какой там стоит процессор и сколько памяти. Для любых нормальных человеческих задач (ну там сайтики, кино, музыка) их в целом хватало. И вот с одной стороны, конечно, хорошо, что сейчас, в 2018 году, о том, что такое процессор, и сколько в твоем ноутбуке оперативной памяти, и даже о том, зачем она нужна, можно не задумываться. А с другой – даже эти невероятные по меркам двадцатилетней, скажем, давности (да, я такой старый, что у меня еще остались недоигранные партии в HoMM II) ресурсы все равно тратятся каким-то диким образом. Какой-нибудь примитивный байесовский классификатор (их с середины 90-х используют для определения, является ли email спамом или нет) требует для своего функционирования несусветных объемов памяти, а работает неприлично медленно.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments