Классификация категорий новостей в приложении для iOS с помощью машинного обучения

Apple во многих отношениях использует методы обработки естественного языка в iOS. Благодаря NLP iOS может автоматически исправлять опечатки, а Siri понимает, о чем мы говорим. На WWDC 2018 Apple представила эти возможности разработчикам с помощью инструмента под названием Create ML. Этот инструмент позволил разработчикам легко создавать модели классификации текста (среди множества других типов моделей).

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



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

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

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

В этом руководстве мы рассмотрим возможности Create ML. Создание машинного обучения стало доступно в Xcode Playgrounds с MacOS 10.14.

Начиная

Откройте Xcode и создайте пустую macOS игровую площадку.

Импортируйте необходимые фреймворки (CreateML и Foundation).

Соберите текстовые данные

Я буду использовать набор текстовых данных по категориям из BBC News.

Этот набор данных состоит из 2245 новостных статей, каждая из которых относится к одной из 5 категорий текста: спорт, бизнес, политика, технологии или развлечения.

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

Create ML может считывать данные двумя способами: с использованием папок в качестве меток, когда файлы разделены по папкам, или путем чтения из одного файла (CSV, JSON). Здесь мы создаем объект URL, указывающий на файл CSV, как показано ниже.

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

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

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

MLTextClassifier

Apple предоставляет тренажер под названием MLTextClassifier. Он поддерживает 57 языков. Модель работает под контролем, что означает, что ваши обучающие данные должны быть помечены (в данном случае текст новости и категория новости).

Модель начинает обучение, когда вы запускаете Create ML, нажав кнопку воспроизведения.

Достаточно запустить этот метод для обучения простой модели, но если вы хотите настроить свои модели, Apple предоставляет для этого некоторые параметры. Допустим, у нас есть текстовые данные, написанные на другом языке. Здесь мы можем указать языковую модель. Если мы хотим изменить алгоритм, поддерживаются два алгоритма: максимальная энтропия и условное случайное поле.

Если этих параметров недостаточно для настройки, Apple предлагает использовать среду Python под названием Turi Create. В августе 2016 года Apple приобрела Turi, стартап по разработке программного обеспечения для машинного обучения, и Turi Create с открытым исходным кодом.

Обучение модели машинного обучения

После завершения обучения модели результат можно будет увидеть, нажав кнопку show result.

По умолчанию Create ML отделяет 5% данных для набора проверки. Этот набор не входит в обучающие данные, поэтому мы тестируем модель на данных, которых она раньше не видела. Обучение останавливается автоматически, когда точность становится достаточно высокой.

Пока модель обучается, Create ML показывает текущий процесс на панели ниже.

Тренировка для двух итераций занимает всего 0,77 секунды.

За кулисами обучения MLTextClassifier

MLTextClassifier автоматически предварительно обрабатывает текстовые данные. На этом этапе удаляется пунктуация и выполняется токенизация.

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

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

Насколько хороша наша модель?

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

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

Если эта модель нам подходит, то мы можем сохранить ее и использовать в приложении для iOS. Чтобы предоставить детали модели, мы создаем метаданные модели. Это объяснение отображается в Xcode, когда мы открываем модель.

Сохраняем модель, указав путь к функции write.

Поскольку мы экспортировали нашу модель, теперь мы готовы использовать ее в приложении для iOS. Создайте SingleViewApp и перетащите свою модель Core ML в свой проект.

Нажмите на модель и проверьте ее детали. Размер модели составляет всего 808 КБ.

Когда мы перетаскиваем модель в проект, Xcode автоматически создает класс для модели. Если вы хотите увидеть созданный код, нажмите на стрелку ниже.

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

Примечание: этот класс не подлежит редактированию.

Чтобы использовать модель, создайте экземпляр класса модели в ViewController.

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

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

Вот и все! Наш классификатор новостей готов.

Спасибо за прочтение!

Если вам понравилась эта история, вы можете подписаться на меня в Medium и Twitter. Вы можете связаться со мной по электронной почте.

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.

Ресурсы