11. HanLP реализует наивную байесовскую/SVM-классификацию текста.

NLP

Заметки воспроизведены в проекте GitHub:GitHub.com/NLP-love/in…

11. Текстовая классификация

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

11.1 Концепции классификации текстов

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

категории текста иногда называютЭтикетка, все категории образуют набор меток, и результат классификации текста должен принадлежать набору меток.

Классификация текста — типичная задача контролируемого обучения, и ее процесс неотделим от руководства человека: ручная маркировка категорий документов, использование корпуса для обучения моделей и использование моделей для прогнозирования категорий документов.

11.2 Корпус классификации текстов

Процесс маркировки корпуса текстовой классификации относительно прост: нужно лишь собрать несколько документов и вручную указать категорию каждого документа. Кроме того, колонки многих новостных веб-сайтов упорядочиваются редакторами вручную, и если настройки колонок соответствуют требованиям, они также могут сканироваться поисковыми роботами и использоваться в качестве корпусов. Среди них Sogou Lab предоставляет такой корпус.Подробнее смотрите в коде (Автоматически загружать корпуса): load_text_classification_corpus.py

GitHub.com/NLP-love/in…

Результат работы следующий:

标注集:[教育, 汽车, 健康, 军事, 体育, 自然语言处理]
第一篇文档的类别:教育

Когда корпус готов, процесс классификации текста обычно делится на два этапа: извлечение признаков и обработка классификатором.

11.3 Извлечение признаков для классификации текста

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

Мы по-прежнему используем вектор мешка слов в качестве вектора признаков.Вектор мешка слов представляет собой вектор частоты или TF-IDF детализации слова, и сначала выполняется процесс сегментации слова.

  1. Причастие

    HanLP позволяет указать токенизатор ITokenizer для конструктора набора данных для реализации логики предварительной обработки, включая токенизацию.

    выполнить Сценарии применения
    HanLPTokenizer Китайский текст с использованием NotionalTokenizer для токенизации и фильтрации стоп-слов
    BlankTokenizer Английский текст, сегментация слов пробелами
    BigramTokenizer Китайский текст, вывод соседних символов в виде биграммы
  2. Выбор функции хи-квадрат

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

    В статистике критерий хи-квадрат часто используется для проверки независимости двух событий.Если два случайных события A и B независимы друг от друга, то вероятность того, что они произойдут одновременно P(AB) = P(A )П(В). Если появление слов и появление категорий рассматривать как два случайных события, то слова с большей независимостью от категорий менее пригодны в качестве признаков. Если мы обозначим ожидание события как E, а частоту фактического возникновения (наблюдения) как N, критерий хи-квадрат измеряет, насколько ожидание похоже на наблюдение. Чем выше значение критерия хи-квадрат, тем более похожи ожидаемые и наблюдаемые значения и тем сильнее отрицание независимости.

    После того, как вы определили, какие функции полезны, вы можете преобразовать документы в векторы.

  3. мешок слов вектор

    Мы извлекаем функции TF и ​​подсчитываем каждую функцию и ее частоту. Принимая идентификатор функции в качестве нижнего индекса и частоту в качестве значения, предполагая, что всего имеется n функций, документ преобразуется в n-мерный вектор набора слов. Следуя привычке литературы по машинному обучению, обозначим вектор набора слов как x, а i-е измерение вектора — как X1. отметить категорию как y, где K — общее количество категорий. Тогда корпус (набор обучающих данных) T может быть представлен как набор из двух кортежей, образованных вектором набора слов x и категорией y:

    T=\left\{\left(x^{(1)}, y_{1}\right),\left(x^{(2)}, y_{2}\right), \cdots,\left(x^{(N)}, y_{N}\right)\right\}

    Без выбора признаков, если в качестве признаков используются слова, n будет порядка 100 000; если в качестве признаков используются биграммы символов, n будет порядка 500 000. Нельзя недооценивать накладные расходы, связанные с сотнями тысяч операций с многомерными векторами.Как правило, выбор признаков по методу хи-квадрат можно использовать для уменьшения количества признаков примерно до 10-20%.

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

11.4 Наивные байесовские классификаторы

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

  1. Принцип наивного Байеса

    Цель наивного байесовского метода состоит в том, чтобы изучить совместное распределение вероятностей P (X, Y) с помощью обучающего набора, и совместная вероятность может быть преобразована в произведение априорного распределения вероятностей и условного распределения вероятностей по теореме Байеса:

    p\left(X=x, Y=c_{k}\right)=p\left(Y=c_{k}\right) p\left(X=x | Y=c_{k}\right)
    • во-первыхРассчитайте априорное распределение вероятностей P(Y=Ck), подсчитав количество выборок в каждой категории:
      p\left(Y=c_{k}\right)=\frac{\operatorname{count}\left(Y=c_{k}\right)}{N}
  • потомВычислите P(X=x|Y=Ck), которую трудно оценить, поскольку величина x очень велика, что видно из следующего уравнения:

    p\left(X=\boldsymbol{x} | Y=c_{k}\right)=p\left(X_{1}=\boldsymbol{x}_{1}, \cdots, X_{n}=\boldsymbol{x}_{n} | Y=c_{k}\right), k=1,2, \cdots, K

    Количество параметров этого условного распределения вероятностей является экспоненциальным, и его трудно оценить.

    По этой причине Наивный Байес «наивно» предполагает, что все функции условно независимы:

    \begin{aligned} p\left(X=\boldsymbol{x} | Y=c_{k}\right) &=p\left(X_{1}=\boldsymbol{x}_{1}, \cdots, X_{n}=\boldsymbol{x}_{n} | Y=c_{k}\right) \\ &=\prod_{i=1}^{n} p\left(X_{i}=\boldsymbol{x}_{i} | Y=c_{k}\right) \end{aligned}

    Таким образом, максимальное правдоподобие можно использовать для оценки:

    p\left(X_{i}=\boldsymbol{x}_{i} | Y=c_{k}\right)=\frac{\operatorname{count}\left(X_{i}=\boldsymbol{x}_{i}, y_{i}=c_{k}\right)}{\operatorname{count}\left(y_{i}=c_{k}\right)}
    • предсказыватьПри наивном байесовском методе по-прежнему используется формула Байеса для нахождения категории Ck с наибольшей апостериорной вероятностью P(Y=Ck|X=x) в качестве выходных данных y:
    y=\arg \max _{c_{k}} p\left(Y=c_{k} | X=x\right)

    Поместите формулу Байеса в приведенную выше формулу, чтобы получить:

    y=\arg \max _{c_{k}} \frac{p\left(X=\boldsymbol{x} | Y=c_{k}\right) p\left(Y=c_{k}\right)}{p(X=\boldsymbol{x})}
    • наконец-то, так как знаменатель не имеет отношения к Ck, его можно опустить, а затем ввести предположение о независимости, чтобы получить окончательную функцию предсказания классификации:
    y=\arg \max _{c_{k}} p\left(Y=c_{k}\right) \prod_{i=0}^{n} p\left(X_{i}=x_{i} | Y=c_{k}\right)
  1. Реализация наивного байесовского классификатора

    Код реализации см. в: text_classification.py.

    GitHub.com/NLP-love/in…

    Результат работы следующий:

    《C罗获2018环球足球奖最佳球员 德尚荣膺最佳教练》	属于分类	【体育】
    《英国造航母耗时8年仍未服役 被中国速度远远甩在身后》	属于分类	【军事】
    《 研究生考录模式亟待进一步专业化》	属于分类	【教育】
    《如果真想用食物解压,建议可以食用燕麦》	属于分类	【健康】
    《通用及其部分竞争对手目前正在考虑解决库存问题》	属于分类	【汽车】
    

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

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

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

СвязанныйПринцип метода опорных векторов (SVM)Подробности смотрите в моем блоге, здесь я не буду вдаваться в подробности:

Аншлаг Spring.com/2019/07/11/…

Реализация линейного классификатора машинного текста опорных векторов

Код реализации см. в: svm_text_classification.py.

GitHub.com/NLP-love/in…

Он может не запуститься в первый раз, класс java не загружен, перезапустите среду и запустите ее, и результат выполнения будет следующим:

《C罗获2018环球足球奖最佳球员 德尚荣膺最佳教练》	属于分类	【体育】
《潜艇具有很强的战略威慑能力与实战能力》	属于分类	【军事】
《 研究生考录模式亟待进一步专业化》	属于分类	【汽车】
《如果真想用食物解压,建议可以食用燕麦》	属于分类	【健康】
《通用及其部分竞争对手目前正在考虑解决库存问题》	属于分类	【汽车】

11.6 Стандартизированная оценка

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

Мы оцениваем 4 комбинации {Наивный Байес, SVM} * {Китайский токенизатор (HanLPTokenizer), BigramTokenizer} в корпусе классификации текстов Sogou.

Код оценки см. в статье text_classification_evaluation.py.

GitHub.com/NLP-love/in…

Результаты оценки следующие:

Алгоритм + сегментация слов P R F1 документов/сек
Наивный Байес + сегментация китайских слов 96.16 96 96.08 6172
Наивный Байес + бинарная грамматика 96.36 96.2 96.28 3378
SVM + сегментация китайских слов 97.24 97.2 97.22 27777
SVM + двоичный синтаксис 97.83 97.8 97.81 12195
  • Классификация китайского текста не требует сегментации слов, а использование метаграмматики напрямую без сегментации слов может обеспечить более высокую точность. Однако, поскольку количество двоичных грамматик больше, чем количество слов, в операции задействовано больше функций, и соответствующая скорость классификации уменьшается вдвое.
  • Линейная машина опорных векторов имеет более высокую точность классификации и более высокую скорость классификации, что рекомендуется.

11.7 Анализ настроений

текстанализ эмоцийОтносится к задаче НЛП по извлечению субъективной информации из текста, и ее конкретная цель обычно состоит в том, чтобы выяснить положительные и отрицательные эмоциональные установки, соответствующие тексту. Анализ тональности можно выполнять для сущностей, предложений, абзацев и даже документов. В этой статье рассматривается анализ тональности на уровне документа, что, конечно, также относится к абзацам и предложениям.

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

  1. Корпус анализа настроений ChnsentiCorp

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

  2. Обучите модель анализа настроений

    Код реализации см. в файле sentment_analysis.py.

    GitHub.com/NLP-love/in…

    Результат работы следующий:

    《前台客房服务态度非常好!早餐很丰富,房价很干净。再接再厉!》 情感极性是 【正面】
    《结果大失所望,灯光昏暗,空间极其狭小,床垫质量恶劣,房间还伴着一股霉味。》 情感极性是 【负面】
    《可利用文本分类实现情感分析,效果不是不行》 情感极性是 【负面】
    

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

11.8 GitHub

HanLP He Han — Заметки о «Введении в обработку естественного языка»:

GitHub.com/NLP-love/in…

Проект постоянно обновляется...  

содержание


глава
Глава 1: Начало работы
Глава 2: Словарные причастия
Глава 3: Бинарная грамматика и сегментация китайских слов
Глава 4: Скрытые марковские модели и маркировка последовательностей
Глава 5: Классификация персептрона и маркировка последовательностей
Глава 6: Условные случайные поля и маркировка последовательностей
Глава 7: Маркировка части речи
Глава 8: Распознавание именованных объектов
Глава 9: Извлечение информации
Глава 10. Кластеризация текста
Глава 11: Классификация текста
Глава 12: Анализ зависимостей
Глава 13: Глубокое обучение и обработка естественного языка