Создайте машинное обучение для обработки естественного языка

Что такое обработка естественного языка?

Обработка естественного языка (NLP) — это подраздел компьютерных наук и искусственного интеллекта, если быть точным. Он занимается программированием компьютеров, чтобы они могли анализировать и обрабатывать большие объемы данных на естественном языке. Цель НЛП — дать компьютерам возможность понимать как текст, так и произносимые слова. Наиболее распространенные приложения НЛП в реальном мире сегодня включают в себя: чат-бот, автозаполнение, автокоррекцию, языковой переводчик, голосовые помощники и фильтрацию электронной почты.

Apple упрощает практику NLP с помощью всего нескольких строк кода на вашем Mac благодаря Swift, Create ML with Xcode Playground.

Что такое создание машинного обучения?

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

Требования

Ссылаясь на документацию Apple, Create ML доступен в macOS 10.14 или выше. Чтобы упростить процесс установки, просто загрузите последнюю версию Xcode из Mac App Store. В программном обеспечении уже есть Create ML и Swift Playground.

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

В этом руководстве вы будете использовать анализ настроений, чтобы понять, как вы можете использовать Swift для НЛП.

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

Также известен как эмоциональный ИИ или анализ мнений. Анализ настроений использует НЛП для обработки данных и определения результата. В большинстве случаев, если он положительный, отрицательный или нейтральный. Анализ настроений обычно используется предприятиями, чтобы помочь им понять отношение своих клиентов к продукту на основе отзывов.

Как и в любом другом обучении машинному обучению, ему нужны данные.

Давайте напишем наши собственные данные

Откройте ваш любимый текстовый редактор и введите данные ниже.

class,text
positive,So thankful for the incredible people of this company for assisting us
positive,Great deals for a reasonable price
positive,This makes me want to buy more of the product
positive,By far the best product release this year
positive,The nice guy immediately provided the replacement
positive,Good support from the team
positive,Grateful for the support that didn't charge me for the parts replacement
positive,I'm loving this new update
positive,Awesome service
positive,One word wow
positive,The new interface is cool and easy to use
positive,Best customer service
positive,Thank you for the new feature
positive,It is an honor working with these amazing people
positive,Another great service
positive,Kudos to this great company
negative,The quality is awful
negative,They make it harder for me to purchase the product
negative,Their support says I need to wait until next week
negative,Provided parts is crappy
negative,I lose everything after the update
negative,None of what I bought works
negative,Where is my delivery
negative,Unhappy again with their service
negative,Seriously this is so expensive
negative,Still not working after the replacement
negative,Bad customer service
negative,It is broken again after 2 days
negative,Waiting for 24 hours now and they're not yet getting back
negative,Disappointed with their new model
negative,Warning never purchase another item from their store
negative,This is an awful company

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

Сохраните файл в формате сентиментанализис.csv.

Создать файл игровой площадки

Откройте Xcode, затем выберите «Файл» -> «Создать» -> «Площадка». Появится окно с предложением выбрать шаблон.

В верхней части выберите macOS -> Пусто -> Далее. Появится другое окно с вопросом, какое имя файла и где сохранить.

Я назвал свой файл SentimentClassifier и сохранил его в папке Desktop/NLPPractice. Выберите Создать, когда закончите.

Пришло время кодировать

Прежде всего, давайте сделаем небольшую очистку и удалим то, что вы не собираетесь использовать. Это даст нашему экрану передышку. Удалите все содержимое в текстовом редакторе, а также нажмите CMD + 0, чтобы скрыть левую панель. Сейчас рабочее место чистое.

Шаг 1. Импортируйте фреймворки

Вы будете использовать две платформы: Foundation для базовых кодов и CreateML для использования NLP.

import Foundation
import CreateML

Шаг 2. Загрузите набор данных

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

//Load the dataset
let dataSet = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/YourUsername/Desktop/NLPPractice/sentimentAnalysis.csv"))

Важно! Константа хранит путь к вашему файлу. Обязательно измените путь, по которому находится ваш файл. В вашем случае я предполагаю, что это /Users/YourMacUsername/Desktop/NLPPractice/sentimentAnalysis.csv.

Шаг 3. Разделите данные обучения и тестирования

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

//Split training and testing data
let(trainingData, testingData) = dataSet.randomSplit(by: 0.8, seed: 5)

2 объявляется константа trainingData и testingData. 0,8 означает, что 80 % данных поступает в первую объявленную константу, которая является trainingData. Тогда вам не нужно объявлять, куда идут оставшиеся 20% данных. Он автоматически распространяется на вторую объявленную константу, которая является testingData. Seed — это генератор случайных чисел, который сообщает степень случайности того, как данные распределяются между обучением и тестированием.

Шаг 4: Определите классификатор

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

//Define the classifier
let sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "class")

Чтобы понять, как это работает, посмотрите на набор данных, который мы используем для этого руководства: содержимое находится в столбце «текст», а положительные/отрицательные — в столбце «класс». Также важно использовать try в случае нулевого значения.

Шаг 5: Определите оценку

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

//Define the evaluation
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData, textColumn: "text", labelColumn: "class")

Как и в шаге 4, содержимое находится в столбце «текст», а положительное/отрицательное — в столбце «класс».

Шаг 6: Создайте метаданные

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

//Meta data
let metaData = MLModelMetadata(author: "Arc Sosangyo", shortDescription: "Sentiment classifier for published tutorial on medium", license: "CC0", version: "1.0")

Шаг 7: экспортируйте модель

После обучения и оценки теперь вы можете экспортировать классификатор в файл, который можно использовать в вашем приложении. Расширение имени файла экспортированной модели — .mlmodel.

try sentimentClassifier.write(to: URL(fileURLWithPath: "/Users/YourUsername/Desktop/NLPPractice/SentimentClassifier.mlmodel"))

Опять же, убедитесь, что путь существует на вашем Mac (см. Важное напоминание на шаге 1). Поскольку указание пути имеет некоторую степень неопределенности, вам нужно использовать try, чтобы отловить любые ошибки.

Запустите программу, нажав кнопку воспроизведения в нижней левой части IDE.

Вы узнаете, успешно ли это, когда он создаст файл классификатора. Для этого примера был создан файл с именем SentimentClassifier.mlmodel. Он также поставляется с этим выводом в вашей среде IDE.

Trained model successfully saved at /Users/YourUsername/Desktop/NLPPractice/SentimentClassifier.mlmodel

В целом у вас есть следующие файлы в папке NLPPractice после успешного запуска кода.

Необязательный шаг: протестируйте модель

У вас также есть возможность протестировать свою модель на игровой площадке, добавив этот код.

//test the model
try sentimentClassifier.prediction(from: "Kudos to this awesome team")
try sentimentClassifier.prediction(from: "This is an awful company")

Вы найдете результат на правой панели IDE.

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

Ниже приведен краткий скриншот кода:

Исходный код доступен на github.
https://github.com/athurion/How-to-use-Swift-Create-ML-for-NLP

Да пребудет с вами код,

-Дуга