Нахождение собственного набора данных
На протяжении всего моего учебного лагеря по программированию в школе FlatIron я балансировал между четкими идеями и завершением работы. Конечно, в каждом проекте со свободными сроками есть такая степень. Когда я начал проект 4, расширенное машинное обучение, мне была предоставлена возможность выбрать собственный набор данных или использовать тот, который предоставила школа. Я хотел попробовать что-то, связанное с моей личной страстью, климатическим кризисом, поэтому я нашел набор данных, который идеально подходил для проекта. Тридцать девять миллионов твитов с хэштегом, связанным с климатическим кризисом, с сентября 2017 г. по май 2019 г. Я был в восторге от применения методов обработки естественного языка (НЛП) к этим твитам, потому что этот период времени включает в себя так много важных событий в общественном сознании. относительно изменения климата. Хотя набор данных опоздал на два месяца после публикации The Unhabitable Earth by New York Magazine, он включает в себя Белый дом Трампа преуменьшает значение собственного доклада о роли человечества в климатическом кризисе, восхождение Греты Тунберг, Доклад МГЭИК об изменении климата за 2018 год, сидячая забастовка Движения за восход солнца в офисе Нэнси Пелоси и 2018 год стал еще одним годом постоянно растущих издержек опасной климатической погоды.
Этот набор данных завораживает меня. В наборе данных нет моего собственного пробуждения климата. Доклад МГЭИК о климате за 2018 год оказал на меня глубокое влияние. Позже я прочитал книгу Необитаемая Земля, и моя жизнь изменилась навсегда. Этот набор данных был прекрасным шансом составить каталог того, как общественность реагировала на различные новостные события, с которыми я был знаком. Как со временем менялось восприятие общественностью климатического кризиса? На что общественность больше реагировала: на погодные катаклизмы, научные отчеты или действия активистов? Эти и другие вопросы можно изучить в этом наборе данных.
К сожалению, Илон Маск решил монетизировать Twitter API, поэтому идентификаторы твитов в наборе данных бесполезны для меня, если только я не захочу вырезать и вставить тридцать девять миллионов идентификаторов твитов в браузер или заплатить больше денег, чем мне хотелось бы. . Так что этот проект мечты придется отложить. Вместо этого я использовал прилагаемый набор данных НЛП. Предоставленный набор данных включал около 9000 твитов (не только идентификаторы твитов), которые писали об Apple или Google во время технической конференции South by Southwest (SXSW) 2011 года; доступен на Kaggle.
Очистка данных, или включать или не включать ретвиты
Процесс очистки данных включал в себя все обычные настройки. Поиск неверных данных и их удаление. Удаление данных, непригодных для бизнес-задачи. Осмысление слов с ошибками. Я столкнулся с двумя проблемами, которые показались мне интересными.
Первыми были сложные существительные. Идея NLP заключается в том, что машина анализирует каждый твит на основе слов, включенных в твит. Если есть составное существительное, например «Apple Store», методы НЛП будут анализировать два слова по отдельности. Поэтому составное существительное нужно идентифицировать как одно слово, поэтому мне пришлось заменить «Apple Store» на «Apple_Store».
Вторая проблема заключалась в том, что делать со всеми ретвитами. На языке Twitter ретвит — это когда вы публикуете чужой твит в своем собственном Twitter. Ретвиты иногда начинаются с нескольких слов, написанных ретвитером, затем буквы «RT», за которыми следует исходный твит. Я решил удалить каждый ретвит, который ретвитил другой твит, найденный в наборе данных, так как они, по сути, будут обрабатываться моделью дважды. Я не уверен, что принял правильное решение, и было бы интересным эпилогом проекта увидеть, как модель работала бы по-другому, если бы я не предпринял этот шаг.
Организация или лемматизация
Выбирая, следует ли составлять слова от основы или лемматизировать, я выбрал основу. Я не тратил много времени на взвешивание вариантов, что делать. Я просто следовал примеру, в котором использовалась основа.
Стемминг — это удаление любого общего суффикса слова, поэтому слово «Время» станет «Тимом», а лемматизация изменит все слова со знакомыми суффиксами на их корневое слово, поэтому «Время» станет «Временем». Оглядываясь назад, могу сказать, что это еще одна часть проекта, которую я хотел бы изучить еще раз, чтобы увидеть, как изменится модель, если вместо этого я применю лемматизацию. Но, как и сам проект, зацикливание на этом не продвигает этот пост дальше, так что к векторизации.
Векторизация
Векторизация — это процесс преобразования слов каждого твита в поддающиеся анализу числа. Я использовал три разных формы векторизации. TF-IDF, Bag-of-Words и Doc2Vec. Из трех типов Bag-of-Words оказался лучшим в создании моделей, которые хорошо предсказывали классификации моих твитов.
Цели
Я решил классифицировать каждый набор твитов по трем критериям: эмоция, компания и бренд/продукт. Я классифицировал каждый твит как одну из трех эмоций: отрицательную, нейтральную и положительную, одну из двух компаний: Google и Apple и один из двух вариантов: бренд или продукт. Таким образом, у меня было двенадцать мишеней, так как трижды дважды два равно двенадцати. Это привело к большому мультиклассовому проекту.
Опять же, оглядываясь назад, я подумал, не слишком ли это большое число для классификации. В качестве эпилога мне любопытно, мог бы я добиться лучших результатов, если бы я запускал две разные модели на одном и том же наборе данных. Я мог бы создать одну модель для анализа эмоций, а другую — для анализа Apple/Google и бренда/продукта. Возможно, если я начну хвастаться этим проектом перед потенциальными работодателями, я смогу добавить этот эпилог.
Модели
Я выбрал пять разных моделей и проверил каждую из них всеми тремя методами векторизации. Я использовал полиномиальный наивно-байесовский алгоритм, логистическую регрессию, метод опорных векторов, случайный лес и XGBoost. Это привело к созданию пятнадцати моделей.
После создания всех этих моделей моделью с наивысшим баллом F1 стала модель логистической регрессии с использованием векторизации Bag-of-Words.
Ассоциации слов
Самой неприятной частью этого процесса были ассоциации слов. Цель словесных ассоциаций — найти слова, которые люди используют в своих твитах сходным образом. Если бы люди говорили о Google так же, как о гениальности, тогда гениальность и Google были бы связаны.
При проведении анализа словесных ассоциаций большинство словесных ассоциаций не имели особого смысла или, по крайней мере, не давали никакой полезной информации. Стандартная функция ассоциации слов в Word2Vec дает десять слов, связанных с выбранным словом, а также десять слов, не связанных. Я бы использовал функцию для слова «Google» и обнаружил, что это слово было тесно связано с «кек», словом, которое использовалось 12 раз в наборе твитов из 9000. Кек — это интернет-сленг 2011 года для смеха. Я не знал, как превратить эту информацию во что-то полезное, чтобы дать моему клиенту.
Расширенное обучение учащихся
В конце концов, я, будучи студентом, узнал больше, чем когда-либо могла машина. Я горжусь проектом, который я сделал, но я признаю, что он мог бы быть лучше. Если бы я снова делал один и тот же проект с самого начала, я бы сделал несколько разных вариантов, чтобы сделать проект лучше. Ведь это и есть цель.
Теперь я продвигаюсь к финальному проекту, а затем к рабочей силе. Я надеюсь, что возьму этот опыт с собой, чтобы создать что-то лучшее.