Глубокое обучение
Как создать проект портфолио сквозного глубокого обучения
Полное руководство по шагам, которые я использовал для создания полного, значимого в реальном мире проекта, который с гордостью демонстрирую в моем профиле.
Это было в конце декабря 2020 года, когда однажды вечером, когда я случайно просматривал свою хронику в Твиттере, я поймал твит известного ютубера, за которым следил, и остановился. Он написал в Твиттере о , как было больно просматривать огромное количество комментариев, которые получало каждое из этих видео, и как часто, так много хороших комментариев, на которые он очень хотел бы ответить, теряются в чистом объеме.
Как практикующий специалист по науке о данных, я был заинтригован идеей эффективно обрабатывать такой огромный поток комментариев к видео. Поразмыслив над этим несколько часов, я был готов поверить, что это действительно серьезная проблема.
Именно тогда родилась идея создать проект, основанный на этом конкретном варианте использования. Я хотел сделать что-то, чтобы упростить просмотр огромного количества комментариев.
В этой статье я расскажу, как я построил проект полного портфолио на основе этой идеи, и как вы можете найти конкретную проблему для решения и построить проект вокруг нее.
Итак, придерживаясь этой мысли, я хочу сказать следующее:
Сосредоточьтесь на реальной проблеме, которую вы могли бы решить с помощью своих навыков.
Действительно необходимо сосредоточиться на проблеме, с которой столкнулся ваш знакомый коллега, член семьи, друг или любой, кто решил поделиться своим опытом в области, которой вы увлечены.
Забудьте на время о глубоком обучении, это серия из девяти вопросов, которые вы должны задать себе в первую очередь:
- Какую проблему собираетесь решать?
- Зачем нужно ее решать?
- Какие данные потребуются для решения задачи и можете ли вы каким-то образом получить к ним доступ?
- Если да, то как и откуда получить к нему доступ? Через общедоступный API, парсинг веб-страниц, Kaggle, наборы данных Google, GitHub, где?
- Когда у вас есть данные - как их очистить и использовать для решения этой проблемы?
- Как вы подойдете к выбору подхода к моделированию?
- Как вы узнаете, какое решение является хорошим? Или есть хорошее решение? Можете ли вы его определить?
- Какие доступные инструменты и библиотеки вы можете использовать для моделирования?
и наконец,
9. Как будут выглядеть ваши результаты?
Когда вы решаете проблему, вы автоматически начинаете думать о следующих шагах из приведенного выше списка. Вполне естественно пойти по этому пути и начать воплощать свою идею в полноценное приложение.
Следовательно, все начинается с проблемы и с того, как вы будете пытаться ее решить.
Теперь запишите этот список. Я использую его и в своих собственных проектах!
Как только вы это сделаете, давайте продолжим.
С этого момента я рассмотрю каждый из этих девяти пунктов и опишу, как я построил вокруг него целый проект.
Пойдем!
1. Какую проблему я собираюсь решать?
Как я уже упоминал в небольшом анекдоте ранее, мне нравится определять эту конкретную точку в одной строке.
Это делает его простым, кратким, легким для понимания и, следовательно, действенным.
Итак, вот мой ответ на вопрос:
Я хочу упростить анализ комментариев к видео на YouTube.
Вот и все. Это моя мотивация сделать этот проект. А теперь определите свое.
2. Зачем мне решать эту проблему?
Сразу же, когда я начал думать об этом твите, внутри меня возникло чувство, которое подсказывало мне, что эту проблему, безусловно, можно решить с помощью некоторого подхода к глубокому обучению.
Было бы замечательно, если бы метод глубокого обучения мог отфильтровать комментарии и убедиться, что в первую очередь показаны только релевантные из них и как группа, чтобы пользователю было легче их прочитать и, следовательно, выбрать ответ на них. .
Итак, моей конечной целью стало - я хочу использовать свои навыки, чтобы помочь найти решение этой проблемы. И потому, что это было бы подходящим использованием обработки естественного языка, а также проблемой для моей способности найти жизнеспособное решение.
Главный вывод из этого вопроса - вам нужно знать, почему вы хотите решить эту проблему. Есть необходимость? Нет хорошего решения? И если что-то доступно, как сделать ваше другое?
3. Какие данные потребуются для решения задачи и могу ли я каким-то образом получить к ним доступ?
На этот вопрос было легче ответить - мне нужно будет каким-то образом получить доступ к комментариям к видео.
Благодаря исследованиям я узнал об удобном API данных YouTube, который позволяет нам делать именно это - получать комментарии. Теперь мне нужно было только написать сценарий, чтобы создать свой собственный набор данных комментариев.
Что касается моего проекта, я также ответил на вопрос нет. 4 в самом вопросе. 😁
Этот шаг имеет решающее значение для того, чтобы убедиться, что вы действительно можете перейти к размышлениям о возможном способе моделирования проблемы с помощью глубокого обучения, если у вас есть источник данных.
Теперь, когда вы знаете, как и где получить доступ к данным, продолжайте и получите их или, что еще лучше, попробуйте создать свой собственный набор данных, как это сделал я!
5. Получив данные, как мне очистить их и использовать для решения этой проблемы?
Я собрал все комментарии, которые хотел бы использовать для моделирования позже. Теперь было принято решение действительно хорошо преобразовать данные, чтобы иметь возможность использовать их в любой модели, которую я разверну позже.
Для каждого проекта требуется свой набор шагов и практик для преобразования данных. Следовательно, очень важно уделять время своим данным.
В моем случае у меня был CSV-файл примерно с 5000 комментариями к выбранному мной видео. Я сохранил его в виде четырех столбцов для каждой строки комментария - текст, автор, идентификатор комментария и тому подобное.
Внимательно изучив комментарии, я обнаружил, что обычно автор, у которого я получал комментарии, получал два типа комментариев:
Один, в котором комментатор обязательно поблагодарил его за видео или в целом аплодировал его навыкам создания фильмов, монтажа и т. Д. Обычно это были очень короткие, лаконичные комментарии.
И второй, в котором комментатор сделал замечание об определенной вещи, которая ему больше всего понравилась в видео, и потребовалось некоторое время, чтобы по-настоящему подробно об этом написать. Эти комментарии часто заканчивались благодарственным сообщением. Как правило, эти комментарии относились к более длинной стороне спектра.
Эти два типа комментариев дали мне идею разделить их на две категории и, следовательно, выполнить разные операции с каждой в соответствии с функциями, которые я решу позже включить в проект.
Поэтому, оглядываясь назад, можно сделать вывод о следующем:
Не забудьте потратить время на очистку, нарезку и преобразование данных в соответствии с вашими потребностями. Изучите, подумайте и напишите о том, какие функции вы хотели бы иметь, и преобразовывайте свои данные в соответствии с ними.
Теперь перейдем к мозгу приложения. Шаги моделирования. 😄
6. Как мне выбрать подход к моделированию?
С самого начала мне было ясно, что мне нужно будет поэкспериментировать с различными способами внедрения приложений НЛП в свой проект. Было важно, чтобы я тратил время на изучение и исследование того, что именно мне понадобится для достижения желаемых результатов.
Но сначала я хотел определить, чем я хочу заниматься в приложении.
Я остановился на следующем:
- Найдите способ выделить важные темы, о которых говорилось в комментариях, - сгруппируйте их вместе
- Реализовать алгоритм семантического поиска для запроса похожих комментариев из корпуса по заданной искомой теме.
Это были две основные особенности моего проекта. Позже я добавил еще две вещи:
- Отображение самых популярных эмоций, используемых людьми в комментариях (что-то оторванное от мейнстрима и немного веселее)
- Отображайте комментарии в виде красивых облаков слов! (что-то эстетичное :))
Мне потребовались недели, чтобы изучить, исследовать и определиться с тем, что я хотел реализовать в проекте.
Помните: не все, что приходит вам в голову инстинктивно, действительно можно включить в окончательное приложение, и не все, что приходит к вам слишком поздно при создании конечного продукта, нельзя включить.
Здесь нет жестких правил, которым нужно следовать. Это ваш проект. Вы можете включать и исключать вещи, когда захотите. Так что потратьте время на это.
Давайте перейдем к следующему вопросу.
7. Как я узнаю, какое решение лучше? Или есть хорошее решение? Можно его определить?
Этот шаг почти так же важен, как и предыдущий.
Функции, которые я решил включить в приложение, напрямую ответили на этот вопрос.
Если бы я мог легко просмотреть тысячи комментариев и выбрать несколько хороших для пользователя, в частности, просто нажав кнопку, это было бы идеальным решением, которое я ищу.
Сделать его как можно более простым с точки зрения пользователя имеет решающее значение для успешного выполнения проекта. Не у всех есть глаза разработчика, который часами сидит за экраном компьютера, чтобы написать проект.
Для меня это определение хорошего проекта. Достижение цели за счет реализации необходимых функций так же важно, как и обеспечение того, чтобы эти функции были невероятно простыми для понимания.
Решение должно быть четким, чистым и простым для интерпретации и анализа. Кроме того, если бы вы могли сделать это легко И весело, это было бы замечательно.
Это было моей мыслью, когда я начал искать способы убедиться, что я также могу, немного позже, если возможно, создать интерфейс для проекта.
А теперь два последних вопроса. Это последние шаги к выпуску хорошего продукта, так что прочтите их.
8. и 9. Какие доступные инструменты и библиотеки я могу использовать для моделирования? и как будут выглядеть мои результаты?
Для моего случая было доступно множество библиотек НЛП. В соответствии с выбранными функциями я решил использовать следующее:
- для кластеризации комментариев с похожими темами - я использовал преобразователи предложений для моделирования семантического сходства для более эффективной кластеризации. Я смоделировал это только на основе более длинного набора комментариев.
- Чтобы найти самые популярные эмоции, я использовал библиотеку emoji и обязательно просмотрел каждую эмоцию и сохранил их частоту. Я использовал это только для более коротких комментариев.
- для получения комментариев из поискового запроса я снова использовал преобразователи предложений, но на этот раз для всего набора комментариев.
- Как только он был построен, я наткнулся на удивительную библиотеку Streamlit, которая позволила мне создать красивый интерфейс всего за несколько часов работы. И это тоже, написав код на самом Python!
- После того, как пользовательский интерфейс был готов, следующим шагом было развертывание / обслуживание проекта удобным способом. Поскольку это проект с открытым исходным кодом, над которым я работаю, я решил использовать для него Docker.
Важно убедиться, что кто-то, кто наткнется на ваш проект на GitHub (я предполагаю, что вы будете отображать его там), сможет легко запустить ваше приложение для себя.
Поэтому необходимо включить четкий набор инструкций в README для проекта. Объясняйте все, что вы можете придумать, и многое другое. Не все, что кажется вам очевидным, также очевидно для них. Так сделай это. Обязательно сделайте это как можно тщательнее.
Вот и все. Наконец-то мы закончили.
Если вы следовали этому пути, поздравляем! Вы на шаг ближе к созданию классного портфолио, которым можете гордиться!
Идите, следуйте инструкциям и СДЕЛАЙТЕ ЭТО!
Последняя вещь.
Если вы были так же взволнованы идеей этого проекта, как и я, и хотите узнать еще больше - у меня для вас хорошие новости.
Я раздаю пошаговое руководство по всему моему рабочему процессу при создании этого проекта с нуля. как электронная книга, конечно!
Все, что вам нужно сделать, это зарегистрироваться здесь.
Изучить науку о данных не так уж сложно, но следуй за мной, и давайте вместе сделаем это весело. 🤠
Недели упорного труда дали результат. Посмотрите весь этот проект на GitHub - он называется: Insight.
Не стесняйтесь связываться с идеями по улучшению этого проекта, если вы действительно этого хотите. Буду признателен за любые отзывы, которые у вас могут быть. Также свяжитесь с нами, если вы хотите создать интерфейс для приложения в React / Vue - будет весело сотрудничать!
Ознакомьтесь со всей кодовой базой моих статей о Data Science здесь:
Спасибо за чтение, и я надеюсь, что вы почерпнули полезные идеи из этой статьи. Увидимся в следующем!