Вы когда-нибудь задумывались, как Twitter, Facebook или Instagram могут определить, опубликовали ли вы что-то, что кажется оскорбительным? Или, возможно, вы случайно разместили оскорбительный комментарий к чьей-то фотографии, а затем в мгновение ока ваш комментарий или пост просто так исчезают (с дополнительным уведомлением, конечно).

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

Итак, как они это делают?

Представляем обработку естественного языка (NLP), ветвь искусственного интеллекта (ИИ), специально разработанную для того, чтобы дать компьютерам возможность понимать текст и произносимые слова почти так же, как люди. Проще говоря, машина, также известная как компьютер, теперь может понимать настоящий человеческий язык, а не только двоичные команды, такие как 101010, или системные директивы, такие как «sudo».

НЛП включает в себя широкий спектр задач и методов, в том числе:

  1. Предварительная обработка текста: очистка и подготовка текстовых данных для дальнейшего анализа.
  2. Тегирование частей речи (POS): присвоение грамматических тегов словам в предложении.
  3. Распознавание именованных объектов (NER): идентификация и классификация именованных объектов (таких как люди, места и организации) в тексте.
  4. Анализ настроений: определение настроения (положительного, отрицательного или нейтрального), выраженного в тексте.
  5. Классификация текста: классификация текста по предопределенным категориям на основе его содержания.
  6. Машинный перевод: перевод текста с одного языка на другой.
  7. Сводка текста: создание сводки более длинного текстового документа.
  8. Ответы на вопросы: ответы на вопросы на естественном языке.
  9. Распознавание речи: преобразование речи в текст.
  10. Преобразование текста в речь: преобразование текста в речь.

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

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

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

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

Как это работает?

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

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

Все еще в замешательстве? ЭЛИ5 пожалуйста.

Представьте, что вы учитесь раскладывать фрукты по двум корзинам: для яблок и для апельсинов. Во-первых, вам нужен кто-то, кто покажет вам много примеров обоих видов фруктов. Это похоже на этап обучения. На этом этапе алгоритм машинного обучения (или вы, в нашем примере) видите множество фрагментов текста (например, электронных писем или комментариев), которые уже были помечены. Это похоже на то, как кто-то показывает вам яблоко и говорит: «Это яблоко», или показывает вам комментарий и говорит: «Этот комментарий оскорбителен».

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

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

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

Наивный Байес

Теперь, когда у вас уже есть некоторые знания об обработке естественного языка (NLP) и классификации текста, мы поговорим о наивном Байесе.

Алгоритм наивного Байеса или наивный байесовский алгоритм — это фундаментальный метод, используемый в классификации текста. Алгоритм Наивного Байеса, названный в честь математиков Томаса Байеса и Пьера-Симона Лапласа, которые разработали теорию вероятности, на которой он основан, работает, применяя эту теорию для предсказания категории фрагмента текста.

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

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

Как это работает?

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

Представьте, что у вас есть этот набор данных:

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

На основе этого набора данных мы будем обучать и создавать нашу модель. Мы собираемся создать частоту терминов (TF) из нашего набора данных.

Термин Частота (TF), часто сокращаемый до TF, подобен счетчику слов для фрагмента текста или документа. Он говорит вам, как часто появляется конкретное слово. Если у вас есть книга и вы используете TF для подсчета слова «любовь», она расскажет вам, сколько раз слово «любовь» написано по сравнению со всеми другими словами в книге. Чем чаще пишется слово «любовь», тем выше частотность его термина. Это удобный способ выяснить, какие слова важны или часто используются в тексте.

Формула ТФ выглядит так:

TF(t, d) = (количество терминов t в документе d) / (общее количество терминов в документе d)

Теперь, если мы применим эту формулу к каждому корпусу для каждой метки, мы получим результаты, как показано ниже:

  • «I»: 1/9 = 0,11 (для положительной метки)
  • «I»: 0/9 = 0,00 (для отрицательной метки)
  • и так далее для других слов или терминов в корпусе.

Преобразуйте его в формат таблицы, тогда вы получите это:

Теперь, когда наша модель уже сохранена, мы хотим выполнить новое предложение и классифицировать, является ли текст отрицательным или положительным. Это наша новая фраза:

"Я люблю свою собаку"

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

Давайте объединим все это с новым входным текстом:

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

Видите цифру ноль, выделенную красным? Мы не можем включить ноль в наш расчет. Почему? Я думаю, вы сможете понять причину. Итак, чтобы справиться с этим, мы применим сглаживание, чтобы уменьшить шум в наборе данных. Проще говоря, мы удалим ноль из нашего случая. Мы будем использовать сглаживание Лапласа (аддитивное сглаживание), и формула выглядит следующим образом:

P(w|c) = (count(w, c) + 1) / (count(c) + |V|)

  • P(w|c) — вероятность слова w данного класса c,
  • count(w, c) — количество раз, когда слово w появляется в классе c в обучающем наборе,
  • count(c) — общее количество всех слов в классе c в обучающем наборе,
  • |В| — количество уникальных слов в обучающем наборе (размер словаря).

Если мы объединим приведенную выше формулу со словом, имеющим нулевой счет, или со словом из нового предложения, которое не встречается ни в одном из классов, то мы получим следующий результат:

  • P(любовь | положительный)= (0+1)/(4+7) = 0,09
  • P(i | отрицательный) = (0+1)/(5+7) = 0,83
  • P(любовь | отрицательный) = (0+1)/(5+7) = 0,83
  • P(my | положительный)= (0+1)/(4+7) = 0,09

Теперь мы можем сделать наш расчет вероятности более плавным.

  • P(Я люблю свою собаку | положительно) = 0,11 x 0,09 x 0,09 x 0,11 = 0,00009801 😊
  • P(Я люблю свою собаку | отрицательный) = 0,83 x 0,83 x 0,22 x 0,11 = 0,01667138 ☹️

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

Это странно, правда? Но именно так работает Наивный Байес. Вот почему он называется «наивным», потому что предполагает, что каждая входная переменная независима. Другими словами, его не волнует контекст предложения, а только вычисление частоты данных/терминов.

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

Заключение

  • Наивный Байес — популярный алгоритм классификации текста. Он использует теорию вероятностей для предсказаний и называется «наивным», потому что предполагает, что каждая особенность текста независима друг от друга.
  • Алгоритм работает, подсчитывая частоту слов в текстах для расчета вероятностей. Он «обучается» на помеченных данных, а затем используется для классификации новых, невидимых данных.
  • Ограничение Наивного Байеса заключается в том, что он не учитывает контекст или отношения между словами. Это может привести к неправильной классификации, когда значение слов меняется в зависимости от их контекста.

Ссылки:

ПИСАТЕЛЬ на MLearning.ai // Интерпретатор кода // Animate Midjourney