Hugging Face Spaces — это репозиторий приложений с открытым исходным кодом, который позволяет вам бесплатно создавать, размещать и демонстрировать свои приложения AI/ML!

Введение

Продемонстрировать свои навыки ИИ еще никогда не было так просто! Всего пару лет назад, если у Data Scientist была идея, он должен был работать над ней с нуля, торопиться, чтобы сделать ее точной, а затем размещать проект в облаке за определенную плату. Проект требовал больших усилий, он был больше связан с командными усилиями, и это был трудоемкий процесс. А сейчас? Ну вот динамика полностью изменилась и в лучшую сторону. Весь процесс можно сделать за пару часов! И все это возможно с появлением универсальных моделей ИИ (таких как языковые модели в NLP и CLIP для CV) и доступности бесплатных платформ для размещения приложений, таких как Hugging Face Spaces.

В этой статье я продемонстрирую свой путь преобразования простых идей в работающие демонстрации, и все это менее чем за 75 строк кода! Для этого мы пройдем через процесс создания и разработки двух демонстраций Spaces. Давайте начнем! 💨

РезюмеСсылка

Проблема

Интернет состоит из ссылок на веб-страницы, и поэтому вполне справедливо, что многие статьи, твиты, сообщения LinkedIn и т. д. также содержат ссылки на другие веб-страницы. Но не утомительно ли открывать и переходить по всем ссылкам на странице, которую вы просматриваете? И если эта ссылка ведет на длинную статью — удачи 🤯

Идея

Как мы можем решить эту проблему? В идеале, разве не было бы здорово, если бы у нас был умный помощник, который мог бы волшебным образом резюмировать для вас содержание ссылки? Давайте создадим такого помощника!

Подход

Что ж, чтобы воплотить эту идею в жизнь, нам нужны две вещи,

  • Сканер ссылок: инструмент, который открывает ссылку (внутри) и извлекает из нее весь текст. Для этого мы можем использовать пакет newspaper3k python.
  • Сумматор текста: модель ИИ, которая принимает извлеченный текст в качестве входных данных и создает небольшую сводку. Для этого мы можем использовать пакет transformers python.

Нам также нужно создать панель инструментов для демонстрации, для чего мы можем использовать пакет streamlit python.

Код

Полный код доступен здесь. Это также обсуждается ниже,

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

  • Строки с 1 по 5: импорт необходимых библиотек.
  • Строки с 8 по 18. Начнем с установки заголовка и макета страницы. Затем мы создаем конвейерную функцию обобщения преобразователей и используем ее для загрузки модели.
  • Строки с 20 по 38: мы создаем функцию, которая принимает URL в качестве входных данных и возвращает просканированный текст (содержимое ссылки) в качестве выходных данных.
  • Строки с 42 по 50: мы всего лишь streamlit код дизайна приложения для размещения текстов, создания текстовых полей редактирования и боковой панели для пары ползунков настроек.
  • Строки с 53 по 69: здесь происходит главное волшебство! Сначала мы проверяем, нажата ли кнопка «Summarize». Если да, то мы передаем текст поля редактирования (содержащего URL-адрес) функции извлечения содержимого URL-адреса. Мы берем вывод содержимого и вызываем на нем конвейер суммирования. Наконец, мы печатаем сводку в приложении.

Демо

Рабочая демоверсия с кодом доступна здесь. Проверьте это. Кроме того, образец изображения приведен ниже,

EmojiFinder

Проблема

Вам когда-нибудь хотелось дополнить свой текст смайликом, но вы не могли этого сделать, так как не знаете, какой смайлик выбрать? И я могу понять, потому что то, что мы пишем, не передает явно то, что мы чувствуем. Со мной такое часто случалось, и мне хотелось, чтобы мне что-то помогло. Но вы знаете, как говорится: «Бог помогает тем, кто помогает себе» ⛪ (забавный факт: этот церковный смайлик был предложен EmojiFinder, если вы используете цитату!)

Идея

Нам нужно приложение, которое принимает текст в качестве входных данных и предоставляет лучшие «подходящие» смайлики в качестве вывода. Кроме того, это «соответствие» должно иметь некоторый оттенок семантического сходства, а не простое соответствие ключевому слову (из приведенного выше примера, Бог → Церковь)

Подход

Чтобы воплотить эту идею в жизнь, нам нужны две вещи,

  • Данные описания эмодзи: здесь у нас есть большая коллекция эмодзи с их названиями и краткими описаниями. UnicodeOrg предоставляет такой список здесь, который может потребовать некоторой очистки. Очищенная CSV-версия предоставляется здесь.
  • Модель сходства текста: она сравнивает введенный текст со всеми описаниями эмодзи и возвращает наиболее подходящие. Для этого мы можем использовать пакет sentence_transformers python, так как у них есть много готовых моделей, которые могут выполнять задачу подобия предложений. Некоторые из моделей: all-MiniLM-L6-v2, paraphrase-albert-small-v2, paraphrase-MiniLM-L3-v2, all-distilroberta-v1, all-mpnet-base-v2. Полный список представлен здесь.

Нам также нужно создать панель инструментов для демонстрации, для чего мы можем использовать пакет streamlit python.

Код

Полный код доступен здесь. Это также обсуждается ниже,

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

  • Строки с 1 по 5: загрузка необходимых пакетов Python.
  • Строки с 7 по 24: мы начинаем с установки заголовка и макета страницы. Далее мы определяем функцию, которая загружает модель сходства предложений. Наконец, мы загружаем описание эмодзи в формате CSV и выбираем только необходимые столбцы.
  • Строки с 27 по 34: функция очистки смайлов, чтобы они правильно отображались в приложении.
  • Строки с 37 по 46: функция, которая принимает входной текст (запрос), целевые предложения (все описания смайликов), а затем встраивает их с помощью модели кодирования предложений. Затем для запроса с помощью косинусного подобия находятся первые N (здесь 5) наиболее похожих описаний эмодзи. Их индексы возвращаются обратно.
  • Строки с 51 по 57: строки дизайна приложения, включая заголовок, описание приложения, ползунки боковой панели и т. д.
  • Строка 60: загрузка модели сходства предложений.
  • Строки с 63 по 74: мы проверяем, нажата кнопка или нет. Если это так, мы вызываем функцию сходства предложений и печатаем наиболее подходящие смайлики.

Демо

Рабочая демоверсия с кодом доступна здесь. Проверьте это. Кроме того, образец изображения приведен ниже,

Заключение

Как мы видели, очень просто (по крайней мере, часть реализации) решать свои повседневные жизненные проблемы, создавая решения на основе ИИ и делая их доступными для всего мира бесплатно с помощью Hugging Face Spaces. И в обоих примерах было менее 75 строк кода (включая часть пользовательского интерфейса, щедрые комментарии и форматирование)! Так что, если у вас также есть проблема, вам просто нужно избавиться от путаницы при формулировании подхода, так как после этого сообщество ИИ с его огромным хранилищем моделей и инструментов с открытым исходным кодом поможет вам! 😃

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

Ваше здоровье.