Классификация текстов с несколькими метками

Тематический классификатор еврейских текстов

Ознакомьтесь с репозиторием GitHub здесь.

Применение:

  • Необходимо назначить темы для 1 миллиона немаркированных отрывков.
  • Даны 100 тыс. помеченных примеров.

Мотивация:

  • Исследуйте отрывки, относящиеся к одной теме.
  • Учитывая один отрывок, найдите другие, связанные с ним по теме.

Приоритеты:

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

Модули:

1. Предварительная обработка

  • Очистка — удаление дубликатов, пустых строк; оставляйте только слова, без пунктуации или html-символов.
  • НЛП — убрать префиксы с иврита; больше инструментов для английского языка, например. корень, удалить стоп-слова.

2. Векторизация

  • Преобразовать в числа — по одной строке на каждый проход. Одна колонка для каждого слова в словаре.
  • Использовали TFIDF, чтобы избежать влияния общих слов, которые обычно встречаются во всех документах.

3. Классифицировать с помощью иерархии

  • Схема: Сократите игровое поле с 4000 до 25, а затем 100 или 200 подтем на тему TOC.
  • Пример: Давид сражается с Голиафом. Этап I — какие темы соответствуют оглавлению. Например. Люди и истории, но не законы и не еда. Этап II — какие дочерние темы относятся к этим широким категориям. Например. история Израиля, а не история Бавеля. Под людьми, вождями и королями, а не женщинами и патриархами.

Алгоритмы

Полиномиальный наивный байесовский алгоритм

  1. Как это работает:
  • Прогнозируемая вероятность того, что предложение относится к определенной теме, рассчитывается: на основе общей вероятности этой темы, умноженной на произведение вероятностей каждого слова в предложении с учетом этой темы (на основе обучающих примеров).

2. Почему это хорошо:

  • Определенные словарные слова будут связаны с определенными темами.

Опорный вектор Классификация — Линейный

  1. Как это работает
  • В многомерном пространстве всех точек данных метки тем делят выборки на несопоставимые группы.
  • Нахождение границы, которая лучше всего разделяет их.
  • То есть он находится дальше всего от членов обеих групп на противоборствующих сторонах.
  • Это позволяет алгоритму решить, как классифицировать новые невидимые образцы из тестового набора. т.е. с какой стороны границ они расположены.
  • Ключевая функция алгоритма: когда вы добавляете измерение, это может обеспечить лучшее разделение между группами.
  • Например. две группы не могут быть разделены в двух измерениях, но когда вы добавляете 3-е измерение.

2. Почему это хорошо:

  • Имеется высокая размерность, благодаря большому количеству слов.
  • Поэтому мы ожидаем, что группы отделятся друг от друга.

Классификация

Бинарная релевантность

  • Серия из 4000 бинарных классификаторов.
  • Преимущество = Эффективность в вычислительном отношении, просто да/нет для каждой темы.
  • Недостаток = не отражает взаимозависимости тем друг от друга.

Ярлык питания

  • Превращает проблему из многозначной в многоклассовую.
  • Используйте все уникальные комбинации меток, найденные в обучающих данных.
  • Недостатки: Это может работать медленно, потому что может быть очень много комбинаций разных тем. Если в тестовом наборе есть какая-то комбинация меток, которой нет в наборе поездов, некоторые темы будут пропущены.

Цепочка классификаторов

  • Пытается быть более эффективным, в отличие от Label Power Set; но все же изучите ассоциации различных тем, которые часто появляются вместе, в отличие от бинарной релевантности.

Мой выбор: я выбрал линейную релевантность svc и бинарную релевантность, потому что они были не только более точными, но и более быстрыми, чем другие. Но теоретически настройка параметров может дать лучшие результаты по сравнению с другими вариантами.

Инструменты, технологии, платформы

  1. панды для дфс,
  2. Nltk для предварительной обработки текста.
  3. Scikit-Learn, Scikit-MultiLearn для алгоритмов векторизации, обучения и классификации.
  4. MatPlotLib и Seaborn для визуализации.
  5. IDE vscode, kubernetes удаленная машина, из-за большого размера базы данных — она была бы слишком велика для моего компьютера.

Личный вклад

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

Что я сделал, так это построил алгоритм с нуля.

Основано на изучении опубликованных работ по иерархической классификации и документации специализированных инструментов, таких как Scikit Multi-learn, и выборе между их алгоритмами.

Проблемы в проекте; и как я ответил...

  1. Слишком много тем: для начала всего несколько часто встречающихся тем.
  2. Слишком много пассажей: взята выборка, которая быстро запускалась, но все же показывала статистическую значимость в результатах классификации (мои эксперименты показали, что это около 40 тыс.).
  3. Дисбаланс классов: в некоторых темах было намного больше отрывков, чем в других. Я просто игнорировал темы, у которых не было порогового количества проходов; Я обнаружил, что 100 было достаточно. Если бы у меня было больше времени, я мог бы уменьшить выборку наиболее популярных тем, чтобы сбалансировать популяцию.
  4. Я заметил, что некоторые темы классифицируются достаточно хорошо, а другие полностью терпят неудачу. Проверил, где определяется порядок тем в df. Это было непоследовательно. В одном месте он был заказан в алфавитном порядке. Но в другом месте это было упорядочено по популярности — сколько пассажей относится к этой теме. Это требовало острого зрения, чтобы обнаружить, но было легко исправить.

Количество человек в проекте:

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

Количество времени, затраченное на проект —

  • Мне дали десять недель. Я закончил раньше. Я думаю, из-за простого начала и постоянного тестирования и оценки, прежде чем переходить к более масштабному и более сложному алгоритму.
  • А затем начал делать модель более сложной. Результаты были очень показательными, поэтому мне дали больше времени для дальнейшего продвижения.

Улучшения

  • Оптимизируйте выбор оглавления, например. сбалансировать платежное поле. Я сделал это с законами, у которых было гораздо больше тем, чем у других.
  • Реализуйте логику, основанную на правилах, особенно для увеличения отзыва.
  • Захват семантического содержания

— 1. Лемматизация для английского языка, а не просто стемминг.

— 2. Вложения слов — соедините похожие термины. а не просто перечисление общих вхождений слов.

  • Поиск по сетке лучших гиперпараметров в обучении.

— 1. N-грамм = 2 и 3 лучше, чем 1.

— 2. Скорость обучения

— 3. Размер партии

Недостатки

  • Удаленная среда часто давала сбой.
  • Решение: импровизируйте! Использовался Colab и локальный компьютер на уменьшенной версии набора данных.