Введение

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

Но обо всем по порядку!

Что такое классификация текстов?

Классификация текста по предопределенным категориям с использованием некоторых автоматизированных методов, таких как машинное обучение, известна как классификация текста. Пример включает в себя — классификацию электронных писем на спам или ветчину, твитов на разные полярности, такие как положительный, отрицательный, отвращение, гнев, страх, радость и т. д. Алгоритмы классификации, такие как наивный байесовский, SVM и даже нейронные сети, могут использоваться для вышеуказанного процесса.

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

Любой кто.

Давайте перейдем к,

Конвейер, необходимый для применения вышеупомянутых алгоритмов машинного обучения:

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

Самый простой распространенный метод:

Подход «мешок слов» (в двух словах):

  • Сначала необходимо создать токены с помощью токенизации, которая превращает строку или документы в токен (меньшие фрагменты), первый шаг в подготовке текста для НЛП, вы можете использовать nltk.tokenize import word_tokenize
  • Лемматизация / Stemming: Сократите слова до их корневых основ.
  • Удаление стоп-слов: удаление знаков препинания или нежелательных токенов, которые не имеют большого значения в зависимости от контекста.
  • Нижний регистр слов также помогает
  • Подсчитайте все токены (что известно как частота терминов)
  • Чем чаще встречается слово, тем важнее оно может быть.
    Может быть отличным способом определить значимые слова в тексте.

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

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

Но есть еще один метод, который преодолевает проблему с набором слов (где учитывается только частота терминов), который называется TF-IDF: означает частоту терминов, обратную частоте документов:

В чем важность TF-IDF?

Что ж, идея TF-IDF заключается в том, что в каждом корпусе могут быть общие слова, помимо стоп-слов, эти слова похожи на стоп-слова и должны быть удалены или уменьшены по важности, например, в статье об астрономии есть слово «небо». может часто всплывать, но это не важно.

Это гарантирует, что эти общеупотребительные слова не будут отображаться в качестве ключевых слов, и сохранит высокий вес частых слов, характерных для документа. Вместе с тем, некоторые редкие слова, такие как «лигер» в статьях о кошках, также будут удалены.

Формула TF-IDF:

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

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

Мы можем использовать gensim.model.tfidfmodel import TfidfModel для этой цели.

Хорошо, теперь вернемся к нашему выбору модели:

Наивный байесовский метод:

Вероятность наблюдения признаков f1 и f2

Апостериорная вероятность после предположения о независимости

Поскольку название предполагает, что Наивный Байес должен выполнять некоторые наивные операции для классификации, спускаясь к математике Наивного Байеса, он предполагает с апостериорной вероятностью, что каждый элемент независим друг от друга при наличии доказательств. Что ж, он работает на удивление хорошо для большинства текстов с небольшим корпусом. (например, твиты или цитаты)

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

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

Теперь поговорим о слоне в комнате!

Машина опорных векторов:

Машина опорных векторов считается одной из лучших готовых моделей всех времен. Потому что вместо вероятностного подхода SVM работает над геометрической интерпретацией проблем. Текст, представляющий собой задачу высокой размерности, вписывается прямо в ее ядро, поскольку модель не зависит от измерений (способность к обучению не зависит от размерности пространства признаков).

Кроме того, из-за этапов предварительной обработки текстовой классификации корпус теперь содержит очень мало нерелевантных функций, и хороший классификатор хотел бы также учитывать взаимодействие между терминами, чтобы понять «плотную» концепцию, которую наивный байесовский подход не удается из-за ее предположения, но поскольку SVM имеет возможность подключать несколько ядер, включая линейное ядро, которое может легко обрабатывать такие предикторы и отделять независимый член на максимальное расстояние. (попробуйте привести пример с кошкой здесь).

Давайте вернемся к матрице терминов документа, которую мы создали ранее на этапе предварительной обработки, и давайте поймем ее значение. Количество уникальных слов в данном документе — это очень маленькая доля от общего количества уникальных слов в корпусе (больше нулей, чем один)… Таким образом, векторы документов разрежены. SVM процветает на редких экземплярах.

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

Перейдя к некоторым исследованиям в Интернете, я наткнулся на очень изобретательное руководство, на основе которого я смог сформулировать эту статью:

Позвольте мне поделиться с вами результатом эксперимента, проведенного факультетом компьютерных наук Корнельского университета. Где они использовали некоторые традиционные методы (включая Наивный Байес) и сравнивали их с SVM.

Согласно эксперименту, проведенному с корпусом Reuters. Точка безубыточности Precision/Recall используется в качестве меры производительности, а микроусреднение применяется для получения единого значения производительности для общих задач бинарной классификации. Вы можете получить больше информации об эксперименте здесь: http://www.cs.cornell.edu/people/tj/publications/joachims_98a.pdf.

Итак, заключение:

Какой алгоритм лучше для классификации текста, однозначного ответа нет и никогда не будет, так как все сводится к вариантам использования, например в телемедицине важно эффективно классифицировать лекарство из остального корпуса данных. Основываясь на дозировке, мы можем предсказать, страдает ли пациент легким или тяжелым заболеванием. Таким образом, использование SVM было бы беспроигрышным вариантом, потому что он не подвержен катастрофическим сбоям, а алгоритм способен коррелировать с другими элементами в корпусе, что помогает понять плотные функции НЛП, приводящие к сентиментальному анализу или машинному переводу, но в в случае Наивного Байеса результаты недостаточно согласуются. Хотя это скорее обобщенный алгоритм, который работает эффективно и дешево, когда мы хотим классифицировать небольшой массив данных с относительно небольшим количеством входных признаков, вы не ожидаете, что входные данные будут значимо коррелированы. Если алгоритм не может зафиксировать корреляцию между разными словами и их интенсивностью, то как вы можете ожидать, что он изучит «порядок слов». Кроме того, удаление стоп-слов и выполнение TD-IDF усугубляет страдания NB, поскольку он убирает хороший кусок необработанного текста. Существуют и другие формы наивного байесовского метода, которые требуют настройки гиперпараметров, что приводит к гораздо лучшим результатам.

Ссылки:

Примечание: эта статья написана новичком для новичков. Пожалуйста, прокомментируйте, если вы обнаружите какие-либо противоречащие утверждения или ложные утверждения. С удовольствием бы поправил.