Добре дошли в моето малко приключение за писане на машинно обучение Twitter бот. Ще запиша какво направих, откъде получих вдъхновението си и в някои части как го направих. Защо реших да създам това чудовище?

Страхотен въпрос..

Имало едно време случайно попаднах на статия, описваща алгоритъм за машинно обучение, използващ поредицата за Хари Потър като вход за написването на собствена глава. Запленен от чистата странност на това какво се оказа машинното разбиране на езика и творчеството, бях заинтригуван да направя нещо подобно. Но какво бих използвал като вход и какво бих направил с изхода? След като изгледах видео поредица за създаване на Twitter бот събрах две и две. Мога да направя Twitter боткойто пише собствените си туитове!

Това беше последвано от още един изблик на твърде ентусиазирано мислене, какво ще стане, ако взема други туитове на други потребители като вход? Добре, страхотно, но кой би видял тези туитове освен мен? Какво ще кажете да взема актуален хаштаг и да го използвам? Продаден.

Сега приключението започва...

Първо, създадох акаунт на програмист в Twitter, отворих страхотен текст, създадох файл на Python, отпих глътка кафе и инсталирах Tweepy. Тогава започнах да пиша..

Първата стъпка беше настройка на обработката на OAuth чрез Tweepy

Тогава трябваше да взема туитове като вход. Но как ще получа популярни туитове? За щастие Twitter има крайна точка, специално изградена по тази причина, изпращайки прост GET ще получите JSON обект, пълен с всички популярни тенденции от всяка посочена държава. Избрах САЩ, тъй като има най-активната потребителска база в Twitter.

Сега имам най-популярния набиращ популярност хаштаг, с който искам да търся, трябваше да получа колкото се може повече туитове. Както всеки, който се занимава с машинно обучениезнае, колкото повече данни, толкова по-добре. Открих, че използвайки стандартния API за търсене в Twitter ще мога да получа 15 000 уникални туита наведнъж, перфектно!

Сега имам 15 000 туитаза използване. Най-накрая дойде време да обучим модела на алгоритъма за машинно обучение. Имайте предвид, че алгоритъмът за машинно обучение, който използвам, е създаден от тозиудивителен разработчик. Това беше нервната част. Оказва се, че наличието на повече данни е страхотно, но когато обучавате модел на машинно обучение на вашия MacBook Air 2015, е бавно. Тази част беше много променлива и напълно зависи от количеството изчерпани данни. Колкото повече данни, толкова повече време отне, обикновено ще отнеме около ~30m за завършване на обучението.

Най-накрая постигнахме успех! Моят бот в Twitter написа, че това е първи туит!

След това го настроих да започне да изпраща туит на всекичас и нещата бяха набъбнали!

Или така си мислех. Колкото по-дълго оставях модела да уча, толкова повече проблеми ставаха крещящо очевидни. Много туитове излязоха като неразбираеми, което, когато се опитвате да се представите за истински човек, не изглежда страхотно. Така че започнах да разглеждам туитовете, които използвах при въвеждане.

Тогава открих фатален проблем, качеството на данните.

Започнах дапроучвамтуитовете, които бяха използвани като информация, за да видя от какво моделът се учи. И стигнах до няколко заключения.

Туитове, използвани за обучение на модела, имаха различни синтаксис и граматически проблеми. Това би било добре, ако проблемите бяха последователни в туитовете на потребителите. Предоставеното несъответствие обаче ограничи процеса на обучение чрез добавяне на повече нови ситуации в етапа на обучение от желаното. Когато става въпрос за машинно обучение, последователността на данните е ключова. В идеалния случай искате много данни за обучение и данни, които не варират толкова масово, колкото това.

С всичко казано дотук, все пак се опитах да предложа решение. Моето решение беше да добавя проверка в речника, когато чета туита. Беше просто и елегантно, ако всички думи в туита бяха намерени в английския речник, туитът беше валиден! Това трябва да елиминира правописните грешки като проблем.

Проблемът е разрешен. Или поне така си мислех...

Какво всъщност направи това? Той намали броя на „валидните“ туитове от 15 000 до по-малко от 1000. И туитовете, които преминаха моята проверка, все още може да имат граматически проблеми.

В този момент имах чувството, че проектът е стигнал до естествен край. Бях работил върху него и го обмислях в продължение на месеци и всяко мое решение изискваше повече работа, отколкото бях готов да дам.

Всичко това ме доведе до окончателното ми заключение. Twitter е грешната платформа, от която да се учи този модел. Проблемите с последователността на данните бяха твърде изтощителни, за да улеснят надеждния процес на обучение. Освен това, поради ограничението на знаците в туитове (280 знака), потребителите са се адаптирали, като използват стенография, за да прехвърлят точка в рамките на лимита. Следователно една социална медийна платформа, която насърчава по-добър английски, би била идеална. За съжаление никоя друга платформа за социални медии няма същата комбинация от масивно активни кошери от съдържание, силен APIза разработчици и система за тенденции като основна част от преживяването.

Поне трябва да науча много за машинното обучение и Twitter API.

Месеци по-късно изпитах носталгия по проекта и реших да използвам данните, които бях събрал, за да създам куп уникални статистики. Ето някои от тях.

Чувствайте се свободни да проверите „завършения бот“ и да го видите на живо в туит, ако го пусна отново.