Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Machine Learning
Code

Изучите модель классификации текста с помощью Create ML

by
Length:MediumLanguages:

Russian (Pусский) translation by Pembelight (you can also view the original English article)

Машинное обучение - это хорошо, но его трудно реализовать в мобильных приложениях. Особенно для людей без знаний науки о данных. Тем не менее, с Core ML Apple можно легко добавить машинное обучение в существующее приложение iOS. Узнайте, как использовать совершенно новую платформу Create ML для тестирования легких, настраиваемых нейронных сетей.

Коротко о главном

Что такое машинное обучение?

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

Как используется?

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

Начинаем

Давайте поэкспериментируем с машинным обучением, построив собственную модель! Вам нужно убедиться, что на вашем Mac установлен Xcode 10 и MacOS Mojave. Кроме того, я предполагаю, что у вас уже есть опыт разработки Swift, Xcode и iOS в целом.

Распознавание изображений

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

1. Набор данных и JSON

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

Загрузка файла

Чтобы избавить себя от необходимости вручную создавать данные обучения для модели анализа, наши друзья из Carnegie Melon University предоставили замечательный бесплатный набор данных.  Я нашел время, чтобы для вас его преобразовать в JSON. (Конечно, вы всегда можете использовать свой собственный набор данных, если хотите сделать все самостоятельно).

Загрузите файл JSON с тренировочными данными из нашего репозитория GitHub. Нажмите «Загрузить» и сохраните файл на своем компьютере.

Замечательно! Теперь, когда он находится на вашем компьютере, давайте внимательнее посмотрим на содержимое файла.

Разбираем JSON

Если вы еще не знаете JSON, этому легко обучиться. JSON - это аббревиатура для JavaScript Object Notation, и, как следует из названия, он полезен для представления объектов и их соответствующих свойств.

В только что загруженном файле вы увидите, что у каждого элемента есть два свойства:

  • label (ярлык) сообщает вам, является ли указанное предложение или фраза положительным или отрицательным.
  • text - это строка текста, которая должна быть проанализированной.

На некоторых ярлыках предметов написано «Pos», а на некоторых «Neg». Как вы, возможно, уже догадались, они означают Позитивный и Негативный соответственно.

2. Подготовка данных

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

Создание playground

В действительности многие уже знают, как создавать приложения для iOS, поэтому на этот раз мы изучим playground для создания моделей машинного обучения. Интересно, не правда ли?  В этом и правда есть смысл, потому что вместо всех этих дополнительных файлов вам нужен начать с чистого листа, чтобы сообщить Swift, каким образом вы будете создавать модель. Так что продолжаем и начинаем создавать площадку MacOS.

Сначала откройте Xcode.

Figure 2 Open Xcode

Затем создайте новый playground.

Figure 3 Create a Playground

И дайте ему пригодное имя.

Figure 4 Naming the Playground

Импортируем фреймворки

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

Удалите весь стартовый код на playground и введите следующее:

Нам понадобится и то, и другое, потому что мы будем использовать URL-адреса для уведомления Create ML, где находится набор данных, и где мы хотим в результате хранить модель, а URL-адреса доступны внутри фреймворка Foundation.

Установка базы данных

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

Преобразование JSON в MLDataTable

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

Введите следующий код:

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

Распределение данных

Как я уже упоминал в статье Training an Image Classification Model With Create ML, хорошей практикой является разделение ваших датасетов на две категории: одну для обучения модели и одну для тестирования.  Поскольку вы хотите фактически уделять больше внимания своей модели, 80% ваших датасетов следует использовать для обучения, а остальные 20% следует отложить для проверки, чтобы убедиться, что все работает так, как нужно. Как-никак, это тоже важно!

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

Вставьте следующую код в свой playground:

Просматривая документацию, randomSplit (by: seed :) возвращает кортеж (tuple - англ.), который содержит две MLDataTables. Мы будем хранить их как (trainingData, testingData), поместив 80% датасетов в trainingData и 20% в testingData.

3. Обучение и тестирование

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

Метаданные

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

Здесь вы можете указать свое имя как автора (author), полезное описание ( description), а также номер версии (version). Эти данные будут показаны при предварительном просмотре модели в Xcode.

Обучение и написание

Теперь вам нужно создать классификатор из набора данных. Требуется ввести следующую строку кода:

Этот код использует ключевое слово try, чтобы попытаться создать экземпляр MLTextClassifier, и сообщает ему, что текстовый столбец называется «text», а столбец метки - «label». Это относится к именам полей, присутствующим в нашем файле JSON.

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

Мы упаковываем метод write(to:) в блок do-catch, чтобы быть в курсе, если что-то пойдет не так. Или же, вы можете просто дать команду try и потом вызвать этот метод; оба вышесказанных способа работают. Не забывайте, что на вашем компьютере, скорее всего, нет пользователя с именем vardhanagrawal, поэтому обязательно измените путь к файлу, в котором вы хотите сохранить свою модель машинного обучения.

Тестирование модели

После того, как вы закончите тренировку, вы увидите некоторые результаты в консоли playground. Это будет выглядеть примерно так:

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

Все, что вам нужно сделать в проекте Xcode, это перетащить вашу модель и ввести следующие строки кода для получения выходных данных из вашей модели:

Это позволит вам протестировать вашу модель и использовать ее в своих приложениях.

Итог

В этом уроке вы узнали, как импортировать файл JSON, создать собственный классификатор текста, а затем использовать его в проектах Xcode. Чтобы узнать больше об этой теме и пересмотреть то, что вы узнали сейчас, обратитесь к документации Apple.

И пока вы здесь, ознакомьтесь еще с некоторыми другими замечательными материалами по машинному обучению на Envato Tuts +!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.