Классификация и прогнозирование текста с помощью подхода Bag Of Words

1656653413 klassifikacziya i prognozirovanie teksta s pomoshhyu podhoda bag of words

от gk_

1*wdtdcVQQRzc7xPNZzyCsUg

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

Один из самых простых и распространенных подходов называется «Мешок слов». Его использовали коммерческие аналитические продукты, включая Clarabridge, Radian6 и другие.

1*j3HUg18QwjDJTJwW9ja5-Q
Источник изображения.

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

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

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

1*aIUBmmPz2K44OdZnWCj4jw
кредит: Смита Милли https://twitter.com/smithamilli

Нам понадобятся три вещи:

  • Файл определения тем/слов
  • Функция классификатора
  • Блокнот для тестирования нашего классификатора

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

Темы и слова

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

topics.json

В этом определении есть два пункта, которые следует отметить.

Сначала давайте рассмотрим некоторые термины. Например, «синяк» — это a стебель. Он будет охватывать такие сверхмножества, как «синяк», «синяки» и т.д. Во-вторых, содержащие термины * есть на самом деле узорынапример *dpm является шаблоном для числа digit, а затем «pm».

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

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

Давайте попробуем классифицироваться.

Классификатор возвращает набор результатов JSON, содержащий предложения (предложения), относящиеся к каждой теме, найденной в сообщении. Сообщение может содержать несколько предложений, а предложение может быть связано ни с одной, одной или несколькими темами.

Давайте взглянем на наш классификатор. Код здесь.

msgClassify.py

Код относительно прост и содержит удобную функцию для разделения документа на предложение.

Прогнозное моделирование

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

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

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

Этот процесс состоит из нескольких шагов:

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

Давайте посмотрим на наши входящие данные. Ваши данные должны иметь схожую структуру. Мы используем pandas DataFrame.

1*SRMLWhU-cEgK_ludaN9gMQ

«инцидент» является двоичным результатом, и он должен быть первым столбцом во входных данных.

Каждый следующий столбец – это тема и % классификации из набора сообщений, принадлежащих пациенту.

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

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

1*SE1UtYrUBvtca6qmwN3P2g

Давайте используем scikit-learn для создания логистической регрессии и проверки нашей модели.

Вот наш результат:

precision    recall  f1-score   support          0       0.66      0.69      0.67       191          1       0.69      0.67      0.68       202avg / total       0.68      0.68      0.68       393

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

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

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

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

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

Наслаждайтесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *