Часть 2 Думайте как специалист по данным! Как создать инструмент НЛП, который может писать за вас блог Medium?

Эта история является продолжением Части-1, в которой мы прошли введение, построение набора данных и анализ данных статей среднего размера.



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

Создание 🎼 музыки (Magenta), 📺 видеороликов (GAN), переноса стилей (style) чего нет, машинное обучение сделало машины более артистичными .

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

Если вы думаете - написание статьи на машине само по себе, чтение ваших мыслей не может быть настоящим. Я частично согласен с вами, так как результаты могут быть не на 100% точными, но тоже неплохими. Прежде всего, спасибо команде Open AI, которая обучила крупномасштабные тексты и разработала модели GPT 2 и GPT 3 для генерации нового текста. Применение моделей безгранично.

Чего же вы тогда ждете? Давайте сами построим это потрясающее творение.

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

Тизер

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

Следующие шаги необходимы для достижения вышеуказанного результата.

  • Обучите модель GPT-2 собственными текстовыми данными с помощью Google Colab
  • Сохраните обученную модель на свой рабочий стол
  • Используйте Streamlit для запуска модели на веб-сайте

Модель поезда

Я полностью рекомендую использовать Google Colab для обучения модели, если у вас нет приличного графического процессора с вами, поскольку colab предоставляет вам бесплатное использование графического процессора, и все, что вам нужно для использования Colab, - это иметь собственную учетную запись Gmail.

Если вы не знакомы с использованием Google Colab, пожалуйста, ознакомьтесь с этим подробным Руководством от ‘fuat’

После того, как вы войдете в Google Colab, убедитесь, что у вас установлена ​​версия Tensorflow 1.15, если нет, установите, используя

!pip install TensorFlow==1.15

У Gpt2 есть маленькие, средние и большие версии, и, конечно же, большая версия даст вам лучшие результаты, поскольку она была обучена на больших данных. Но для наших целей обучения давайте воспользуемся gpt-2-simple. Установите gpt-2-simple с помощью pip

!pip3 install gpt-2-simple

Импортировать gpt-2-simple

import gptstreamlitsimple as gpt2
import os
import requests

Поскольку мы переобучаем модель, нам нужно сначала загрузить модель, и существуют разные размеры GPT-2, и снова давайте использовать более простую модель «117M», которая занимает 500 МБ размера вашего диска.

model_name = "117M"
if not os.path.isdir(os.path.join("models", model_name)):
 print(f"Downloading {model_name} model...")
 gpt2.download_gpt2(model_name=model_name)

Следующим шагом является загрузка ваших входных данных для обучения модели. Я использовал текст из статей с очищенного носителя (см. Часть 1), сохранил его как файл train.txt и загрузил на Google Диск.

Вы можете легко переобучить модель, используя функцию точной настройки gpt2, и контрольные точки модели будут сохранены в / checkpoints / run1 по умолчанию в проводнике файлов colab.

sess = gpt2.start_tf_sess()
file_name = "train.txt"
gpt2.finetune(sess,
              file_name,
              model_name=model_name,
              steps=1000, run_name = 'run1')

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

!cp -r /content/checkpoint/run1 /content/drive/My\ Drive/run1

Сохранить модель

После успешного обучения модели настроенная модель будет сохранена в папке checkpoint / run1. Вы можете найти это в проводнике файлов в Colab (см. Выделение на изображении выше). Теперь вам нужно сохранить всю папку с моделью на свой рабочий стол.

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

Запустите модель на веб-сайте

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

Всем будет интересно посмотреть на отличный визуал или веб-сайт и обсудить это, но это может быть не то же самое со скучными таблицами Excel или необработанными результатами.

Для запуска нашей модели на веб-сайте мы будем использовать не что иное, как streamlit - «Самый быстрый способ создания приложений для данных».

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



Теперь откройте новый файл python (я использовал Pycharm) и убедитесь, что вы установили edTensorflow 1.15, streamlit и gpt_2_simple, вы можете использовать pip install xxxx в качестве запроса для установки библиотек.

В / models вы можете увидеть одну модель с именем 124M, но вместо этого мы хотим использовать нашу собственную модель. Для этого нам нужно создать папку и добавить нашу папку run1.

Убедитесь, что у вас есть указанные ниже файлы в папке run1. 1000 в именах файлов относится к количеству шагов, которые была обучена модель. Поскольку я провел переобучение модели для 1000 шагов, в именах файлов есть модель-1000.

контрольно-пропускной пункт

модель-1000.data-00000-из-00001

модель-1000.index

модель-1000.meta

Вы можете управлять моделью, используя такие параметры, как top_k и length в функции generate. Я использую модель для генерации 100 слов на основе введенного текста. Это можно сделать с помощью gpt2.generate(session,prefix=starting_sentence,top_k=40,length=100,return_as_list=True)

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

Чтобы запустить сценарий и увидеть результат, перейдите в терминал и убедитесь, что вы находитесь в папке с исполняемым сценарием, и введите streamlit run article_generation.py

Вы должны автоматически увидеть веб-сайт, работающий локально на вашем рабочем столе. Загрузка может занять некоторое время (для меня это заняло 1 минуту), поскольку мы пытаемся загрузить модель размером 500 МБ.

См. Образец результата ниже

Результат

Вход -

НЛП - лучшее, что может случиться с машинным обучением

Выход -

НЛП - лучшее, что могло случиться с машинным обучением. Это изменило то, как мы думаем о языках и работаем с ними. Это изменило наше представление о новых концепциях. Это изменило нашу жизнь. Это изменило наши отношения с нашими устройствами. Это изменило нашу жизнь неожиданным и чудесным образом. И все благодаря золотому дню искусственного интеллекта Hugging Face »,« Мы собираемся сделать первые шаги в мире машинного обучения. Мы надеемся, что к концу статьи вы научитесь: «По мере старения машин

Когда я ввел данные «НЛП - лучшее, что могло случиться с машинным обучением», модель выдала приличный результат.

Модель удивила меня, сказав: «Все из-за золотого дна искусственного интеллекта Hugging Face».

Модель знает, что Hugging Face оказал большое влияние на раздел машинного обучения NLP 👏🏼.

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

Бонус (Прогнозирование хлопков)

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

Git

Вы можете следить за всем кодом проекта здесь