В нашем телеграм-канале NLP-инженер Антон Балтачев ведет авторскую колонку, где рассказывает про data science, обработку естественного языка, технологии и задачи разработчиков простым языком.
Мы собрали несколько постов из колонки в один текст — чтобы вам было удобнее читать. Здесь Антон рассказывает, как происходит процесс создания продукта в R&D-отделе на примере его недавней задачи — сервиса извлечения ключевых фраз из документов на русском и английском языках.
Решение задачи начинается с ее постановки, и обычно за это отвечают продакт-менеджеры: они занимаются анализом требований будущих пользователей и понимают, какого результата необходимо достичь.
Очень важно «на берегу» договориться, какое качество работы системы будет считаться приемлемым. Допустим, сервис извлечения ключевых фраз должен выдавать в топ-5 фразы, которые непосредственно относятся к теме документа и дают понять, о чем он, даже не читая его. Хотя это довольно расплывчатая формулировка, она задает некоторый стандарт качества.
С другой стороны, определение критериев качества помогает отсекать завышенные ожидания заказчиков: иногда те не до конца осведомлены о возможностях существующих технологий или трудоемкости создания новых. Невозможно научить модель за месяц отвечать на вопрос «Кто убил Лору Палмер?» или качественно извлекать ключевые фразы из всех статей «Википедии».
Зачастую решение задачи требует размеченных данных — определенным образом обработанных документов, звукозаписей или видео, язык которых понимает алгоритм. В нашем примере (сервисе извлечения ключевых фраз) — это выделение в документах конкретных словосочетаний и слов.
Если заказчик предоставил достаточно данных или готов их размечать — это отлично, но, к сожалению, пока с такими ситуациями мы сталкиваемся редко. Чаще данных недостаточно, чтобы модель выучила что-то полезное, и размечать приходится разработчикам.
Для этого в некоторых data science-компаниях существуют целые команды собственных асессоров — специалистов, ответственных за этот процесс. Другие пользуются услугами аутсорс-компаний, которые предоставляют уже обученных асессоров для разметки данных.
Также важно сразу выбрать формальные метрики, которые максимально коррелируют с задачей бизнеса. Иначе можно попасть в когнитивную ловушку и радоваться высоким результатам по нерелевантной метрике. Например, в одном исследовании психологи нашли высокую корреляцию между размером стопы подростка и его знаниями математики. На деле всё оказалось просто: средний одиннадцатиклассник имеет больший размер стопы и больше знаний по математике, чем средний пятиклассник.
После определения задачи, желаемого результата и метрик начинается процесс исследования научного прогресса по теме. В моем случае это было чтение научных статей и общение с людьми, которые уже решали задачу извлечения ключевых фраз из документов. Обычно даже простой разговор с правильным человеком может сэкономить огромное количество времени и позволит не изобретать велосипед.
На основе полученных знаний разрабатывается метод решения задачи. Например, я использовал подход, в основе которого лежит построение фраз на базе лингвистических признаков слов и их сравнение с эталонными ключевыми фразами.
После этапа исследования начинается стадия реализации различных идей. В среднем на проверку гипотезы уходит несколько недель, поэтому важно изначально придумать такой способ, который покажет неплохое качество, но не будет слишком трудоемким.
Если качество решения не устроило заказчика, то цикл начинается снова: идет доработка решений и новая итерация обучения моделей, либо отказ от старых идей и долгие часы придумывания новых.
Если заказчику нравится качество, то начинается стадия внедрения сервиса. Здесь возникают новые челленджи: алгоритм должен работать быстро, почти в реальном времени, ведь пользователи не привыкли долго ждать ответ. Поэтому часто приходится оптимизировать алгоритмы и придумывать хаки, которые позволят им не проседать по качеству и быстро отвечать на запрос.
Подводя итог, можно сказать, что разработка data science-продукта сопряжена с высокой неопределенностью: большое количество гипотез оказываются нежизнеспособными. Однако успешный сервис поможет сэкономить много времени. Для примера вернемся к сервису извлечения ключевых фраз: чтение даже небольшой статьи занимает около 10 минут, а сервис сокращает это время до 10-15 секунд, позволяя понять о чём документ, даже не читая его.
Колонка выходит регулярно в телеграм-канале Embedika. Хотите обсудить тему с автором или задать вопрос — пишите на info@embedika.ru.
В ближайшее время наш менеджер свяжется с Вами.