ГоловнаСтаттіФізіологія

Кислотно-лужна рівновага проти TF-IDF: Розробка класифікатора настроїв для твітів

Практичний посібник з побудови трикласного класифікатора настроїв для твітів, порівняння методів Bag-of-Words та TF-IDF векторізації та дослідження, де модель помиляється.

mysimulator teamОновлено — червень 2026≈ 5 хв читання▶ Відкрити симуляцію

Завдання: класифікація твітів як позитивні, негативні або нейтральні

Враховуючи приблизно 27 000 твітів, позначених як позитивні, негативні або нейтральні, мета полягає у побудові моделі, яка прогнозує настрій з тексту самостійно. Мітки відносно збалансовані: близько 40% нейтральних, 31% позитивних та 28% негативних, а середня довжина твітів становить приблизно 68 символів, варіюючись від лише 3 символів до старої межі в 140 символів. Перш ніж проводити будь-яке моделювання, рядки з відсутнім текстом видаляються, і перевіряється початкова розподілена мітка та розподіл довжини, оскільки обидва безпосередньо впливають на те, який сигнал має до обробки короткий текстовий класифікатор.

Попередня обробка: від необробленого твіту до очищених токенів

Твіти містять шум: змішаний регістр, URL-адреси, розділові знаки, орфографічні помилки та сленг. Попередня обробка виконується шляхом приведення в нижній регістр усього тексту, видалення URL-адрес, видалення будь-чого, що не є літерою або числом, токенізації отриманого тексту, видалення англійських стоп-слів і дуже коротких токенів, а також застосування стовника Snowball, щоб «щасливий», «щастя» та «щасливіший» усі згорталися до спільного кореня, такого як «щасливий». Твіт на кшталт «Настільки СУМНІЙНЕ я буду скучати за вами тут у Сан-Діагьо!!!» стає «настільки сумний», «я буду скучаю» та «сан-діагьо» — коротшим, нижнім регістром і позбавленим будь-чого, що не містить інформації про почуття.

Векторизація тексту: Bag-of-Words проти TF-IDF

Машинні моделі навчання потребують чисел, а не слів, тому очищений текст перетворюється на вектори за допомогою двох різних підходів, кожен з яких обмежений 5000 найбільш частими токенами для справедливого порівняння:

Чотири класифікатори — Логістична регресія, Дерево рішень, Випадковий ліс та Градієнтне підсилення — спочатку навчаються на векторах Bag-of-Words. Випадковий ліс та логістична регресія приблизно рівні за міцністю (близько 69% точності, 0,688 зваженого F1), значно перевершуючи Дерево рішень (62% точності) та Градієнтне підсилення (66%).

Чи дійсно допомагає TF-IDF?

Навчання того ж найкращого за результатами моделі (Random Forest) на вектори TF-IDF замість безперечних даних змушує точність зростати з 68,9% до 69,8% та вагу F1 – з 0,6885 до 0,6974 – це скромне, але реальне покращення. Розподіл за класами показує, що класифікатор найкраще працює для позитивного класу (F1 = 0,74) та найгірше – для негативного (F1 = 0,68), найбільшу плутанину відбувається між негативними та нейтральними твітами, а не між позитивними та негативними – класифікатори настроїв найчастіше зазнають невдачі у розрізненні ледь помітного негативу від нейтральності, а не у розрізненні протилежних екстремумів.

Порівняння 20 найбільш важливих слів під кожною векторизацією виявляє значний перетин – слова як love, thank, good, miss, happy, sad домінують в обох випадках – але відносне ранжування дещо змінюється, відображаючи тенденцію TF-IDF підвищувати значення слів, які більш виділяються в корпусі.

Де модель помиляється

Аналіз приблизно 30% твітів, які модель класифікує неправильно, часто є більш інформативним, ніж сама цифра точності. Найбільш поширеними закономірностями є помилки, пов’язані з сарказмом («lol that`s great For you....», позначений як негативний, але передбачений як нейтральний), умовляннями та твітами, які змішують позитивні та негативні емоції в одному короткому тексті. Помилки також схильні згрупуватися навколо меж нейтрально-негативного та нейтрально-позитивного, а не навколо перепадів від негативного до позитивного, що має сенс: розрізнення ‘рівного, беземоційного’ тексту від ‘слабо емоційного’ тексту є справді складнішим лінгвістичним судженням, ніж розрізнення явно протилежних емоцій.

Три конкретні напрямки покращення випливають з цього аналізу помилок: краще оброблення текстів, специфічних для інтернету (розширені слова, такі як ‘sooo’, емодзі, нормалізація сленгу), перехід від окремих слів до біграм і триграмів або векторних представлень слів, які враховують певний контекст, та конкретне вирішення межі негативного/нейтрального, а не оптимізація загальної точності.

Часті запитання

Чому TF-IDF зазвичай перемагає простий метод Bag-of-Words для класифікації тексту?

Метод Bag-of-Words вважає слово, яке з'являється в 90% документів, таким же, як і слово, яке з'являється лише у 2% документів, навіть якщо рідкісне слово набагато корисніше для розрізнення класів. TF-IDF явно зменшує вплив дуже поширених слів і підсилює виразні, що зазвичай дає нижчому класифікатору чистіший сигнал для роботи — хоча покращення часто помірне, а не драматичне, як це видно тут.

Чому класифікація негативних та нейтральних текстів складніша, ніж класифікація позитивних та негативних?

Позитивні та негативні емоційні забарвлення використовують чітко протилежні слова (любов vs ненависть, щастя vs смуток), які лінійні та древоподібні моделі легко виловлюють з частоти появи слів. Нейтральний текст, на відміну від цього, визначається *відсутністю* сильного емоційного мовлення, а не унікальним словниковим запасом, і помірно негативні твіти можуть виглядати лексично схожими на плоскі нейтральні, що є точкою, де цей класифікатор робить більшість помилок.

Чи б сучасна модель трансформатора зробила значно краще в цьому завданні?

Так, зазвичай. Моделі, такі як BERT, захоплюють порядок слів і контекст (тобто 'не добре' розуміється по-різному від 'добре'), що методи Bag-of-Words та TF-IDF не можуть представляти взагалі, оскільки вони повністю ігнорують порядок слів. Для короткого, неофіційного тексту, такого як твіти, контекстні вкладення зазвичай забезпечують значний приріст точності порівняно з класичними методами векторизації, але це супроводжується значно вищими обчислювальними вимогами.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію the simulation

Що ви знайшли?

Додати кроки відтворення (опційно)