Глубокое обучение

Как создать проект портфолио сквозного глубокого обучения

Полное руководство по шагам, которые я использовал для создания полного, значимого в реальном мире проекта, который с гордостью демонстрирую в моем профиле.

Это было в конце декабря 2020 года, когда однажды вечером, когда я случайно просматривал свою хронику в Твиттере, я поймал твит известного ютубера, за которым следил, и остановился. Он написал в Твиттере о , как было больно просматривать огромное количество комментариев, которые получало каждое из этих видео, и как часто, так много хороших комментариев, на которые он очень хотел бы ответить, теряются в чистом объеме.

Как практикующий специалист по науке о данных, я был заинтригован идеей эффективно обрабатывать такой огромный поток комментариев к видео. Поразмыслив над этим несколько часов, я был готов поверить, что это действительно серьезная проблема.

Именно тогда родилась идея создать проект, основанный на этом конкретном варианте использования. Я хотел сделать что-то, чтобы упростить просмотр огромного количества комментариев.

В этой статье я расскажу, как я построил проект полного портфолио на основе этой идеи, и как вы можете найти конкретную проблему для решения и построить проект вокруг нее.

Итак, придерживаясь этой мысли, я хочу сказать следующее:

Сосредоточьтесь на реальной проблеме, которую вы могли бы решить с помощью своих навыков.

Действительно необходимо сосредоточиться на проблеме, с которой столкнулся ваш знакомый коллега, член семьи, друг или любой, кто решил поделиться своим опытом в области, которой вы увлечены.

Забудьте на время о глубоком обучении, это серия из девяти вопросов, которые вы должны задать себе в первую очередь:

  1. Какую проблему собираетесь решать?
  2. Зачем нужно ее решать?
  3. Какие данные потребуются для решения задачи и можете ли вы каким-то образом получить к ним доступ?
  4. Если да, то как и откуда получить к нему доступ? Через общедоступный API, парсинг веб-страниц, Kaggle, наборы данных Google, GitHub, где?
  5. Когда у вас есть данные - как их очистить и использовать для решения этой проблемы?
  6. Как вы подойдете к выбору подхода к моделированию?
  7. Как вы узнаете, какое решение является хорошим? Или есть хорошее решение? Можете ли вы его определить?
  8. Какие доступные инструменты и библиотеки вы можете использовать для моделирования?

и наконец,

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 здесь:



Спасибо за чтение, и я надеюсь, что вы почерпнули полезные идеи из этой статьи. Увидимся в следующем!