Я всегда ищу новые наборы данных для проектов машинного обучения, поэтому я был особенно взволнован, обнаружив этот набор данных общественного достояния из ~ 400 тысяч законопроектов Конгресса. Набор данных содержит более 20 точек данных для каждого счета. Вот пример подмножества этих данных для одного счета:

  • Название: законопроект о расширении национального заповедника дикой природы Джеймса Кэмпбелла, графство Гонолулу, Гавайи
  • ID: 109-S-1165
  • URL: https://www.congress.gov/bill/109th-congress/senate-bill/1165
  • Тема: общественные земли
  • Дата выпуска: 6 июня 2005 г.
  • Дата принятия: 25 мая 2006 г.
  • Представитель Конгресса, представивший его: Даниэль Иноуе
  • Пройдено: да

Счетам из этого набора данных была вручную назначена тема экспертами в предметной области. Разрешения в наборе данных не помечены, что делает его очень подходящим для AutoML Natural Language - мы можем использовать помеченные счета, чтобы обучить модель и посмотреть, как она работает с немаркированными разрешениями. Мы будем использовать название законопроекта в качестве входных данных для нашей модели, а метка будет темой. Исходный набор данных включает тему более высокого уровня (поле Major в наборе данных) и более конкретную (Minor) тему для каждого счета. Для простоты мы будем использовать только поле темы Major для классификации счетов.

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

Title: To permit the televising of Supreme Court proceedings.
Category: Technology
-----
Title: A bill to provide a program of tax adjustment for small business and for persons engaged in small business.
Category: Domestic commerce

Первым шагом в построении модели с AutoML NL является загрузка CSV обучающих данных. Я написал сценарий, который извлекает только банкноты с заданной темой и удаляет некоторые символы из текста. В результате CSV выглядит так:

Если вы хотите поиграть с набором данных, который я использовал для обучения модели, я сделал CSV-файл общедоступным здесь.

Обучение модели AutoML NL

Теперь, когда у нас есть CSV с нашими текстовыми полями и связанными с ними ярлыками, мы можем загрузить его прямо в пользовательский интерфейс AutoML, чтобы создать наш набор данных:

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

Чтобы обучить нашу модель, все, что нам нужно сделать, это нажать кнопку поезда:

Как это круто?! Нам не нужно писать какой-либо базовый код модели - AutoML сделает это автоматически за нас.

Оценка нашей модели

Чтобы оценить нашу модель, мы посмотрим на матрицу неточностей на вкладке Оценить пользовательского интерфейса:

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

Матрица неточностей показывает точность для 10 из 20 наших тем, но мы также можем посмотреть индивидуально на тему, чтобы увидеть конкретные примеры, которые наша модель классифицировала правильно и неправильно. Глядя здесь, мы могли бы захотеть улучшить обучающие данные для Domestic Commerce счетов, поскольку наша модель правильно классифицировала только 78% из них и запутала около 10% из них как Macroeconomics.

Создание прогнозов для немаркированных счетов

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

Одновременное постановление, предусматривающее необходимые меры для инаугурации избранного президента и вице-президента США.

Модель утверждает, что с вероятностью 95,6% этот счет связан с Government Operations. Я провел еще два примера с нашей моделью, чтобы увидеть, как она работает с новыми данными:

Bill: Honoring women who have served, and who are currently serving, as members of the Armed Forces and recognizing the recently expanded service opportunities available to female members of the Armed Forces.
Predicted label: Civil Rights 88.5%, Defense 7.5%
-----
Bill: Setting forth the congressional budget for the United States Government for fiscal year 2010 and including the appropriate budgetary levels for fiscal years 2009 and 2011 through 2014.
Predicted label: Macroeconomics 99.5%

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

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

Что дальше?

Для американских читателей: поскольку день выборов в США приближается, а этот пост касался набора политических данных, я воспользуюсь этой возможностью как бесстыдной приманкой, чтобы побудить вас проголосовать :)

Хорошо, вернемся к моему регулярному расписанию программирования - ознакомьтесь с этими ресурсами, чтобы узнать больше о том, что я здесь рассмотрел:

И если вам нравится писать код модели , ознакомьтесь с этим постом, который я написал о построении модели классификации текста с помощью Keras, чтобы предсказать цену вина с учетом его описания, или этот пост с использованием TF Hub построить модель классификации текстов ». Следите за обновлениями, чтобы увидеть больше сообщений в блоге об этом наборе данных. Я также хотел бы услышать, если вы сделаете с ним что-нибудь интересное! Вы можете оставить комментарий ниже или найти меня в Твиттере по адресу @SRobTweets.