See Request_Classification.ipynb
Побудуйте класифікатор, який буде предбачати категорію запиту до служби 1551 з використанням тільки векторів слів (не використовувати інших фічі, такі як самі слова, нграми і т.д).
Вектори можна завантажити зі сторінки проекту lang-uk - можете обрати будь-які з векторів.
Запити знаходяться у архіві 1551.zip. Кожний файл в архіві має назву, яка відповідає категорії запитів, яку треба передбачати (загалом, 188 категорій), та містить запити у формі: id, текст запиту, 2 порожніх рядки. Наприклад у наступному фрагменті містяться 2 запити під номерами 3281192 та 2836792:
3281192
По вул.Шпака, на в’їзді до будинку №5 зі сторони буд. №3 відсутні захисні люки лівнєстоків. Ситуація є небезпечною для людей та автотранспорту. Прошу вжити необхідних заходів. Фото додаю.
2836792
Вітаю,
Мною подавалися заявки на виконання ремонту аварійних ділянок по вул. Сєченова та Коломийському провулку у м. Києві. Заявки № Я-2800 від 01.07.2013 та № Я-3167 від 23.07.2013. Мені було надано відповідь, що ремонт буде виконано при отриманні фінансування. З моменту моїх звернень пройшло більше року, було затверджено бюджет Києва на 2014 рік, проте ремонтом дорожнього покриття на вул. Сєченова так ніхто і не займався.
На сьогодні більшість отворів дощових колекторів по вул. Сєченова не укомплектовані решітками, що ставить під загрозу безпеку пересування транспортних засобів та пішоходів, та не відповідає вимогам ДСТУ.
На виконання вимог ДСТУ 3587-97. Безпека дорожнього руху. Автомобільні дороги, вулиці та залізничні переїзди. Вимоги до експлуатаційного стану ПОВТОРНО прошу:
1. Укомплектувати отвори дощових колекторів по вул. Сєченова металевими зливними решіткам замість дощок (фото додаються).
Заздалегідь вдячний.
Можете використайте фільтрацію мови, щоб відібрати тільки україномовні запити.
-
У якості безйлайну використайте класифікатор kNN, який буде шукати найближчі за косинусною відстанню вектори запитів, утворені сумуванням векторів всіх слів запиту.
-
Розробіть покращений класифікатор, для якого використайте іншу модель класифікації, яка би присвоювала ваги окремим елементам вектора (наприклад, Logistic Regression, SVM, Random Forest). Також можете зробити додаткові покращення, такі як:
-
здійснювати попередню фільтрацію і відбирати тільки частину векторів для представлення
-
використовувати лематизацію та інші форми нормалізації
-
робити зваження векторів
-
додатково використовувати інші способи побудувати вектор документу (наприклад, TF-IDF, LDA, ...)
- Розробіть класифікатор на основі нейромережі: або feed-forward з використанням агрегованого вектору, або LSTM (чи BiLSTM), що проходить по всьому тексту.
Порівняйте між собою якість роботи класифікаторів. Для навчання створіть вибірку, що міститиме 70% текстів, а для поріняння використовуйте залишок 30%.
Оцінювання: 30 балів + 30 балів + 40 балів