Прекратите использовать Google Translator! Создайте собственное приложение с ИИ
В современном глобализированном мире общение с людьми из разных стран и культур становится всё более важным. Однако языковые барьеры часто могут мешать эффективному общению. Хотя Google Translate стал популярным инструментом для преодоления этого разрыва, у него есть свои ограничения, особенно когда речь идёт о точном переводе длинных текстов.
Меня очень раздражает копировать/вставлять небольшую часть текста в Google Translate, ждать результата, копировать в свой файл… копировать, вставлять, повторять… Так почему бы не решить эту проблему?
Также есть опасения по поводу конфиденциальности и безопасности использования сторонних сервисов для перевода конфиденциальной информации. В этой статье мы рассмотрим альтернативное решение для создания собственного приложения для перевода на основе ИИ с использованием Hugging Face. Создав собственное приложение для перевода, вы сможете обеспечить конфиденциальность и безопасность своих данных, а также добиться достаточно точного перевода длинных текстов.
Вот вкратце шаги, которые мы предпримем:
Установка зависимости
Нам нужно не так много пакетов: мы хотим получить доступ к моделям Hugging Face, создавать фрагменты длинных текстов и графический интерфейс.
Но сначала, в качестве хорошей практики, давайте создадим виртуальную среду для нашего нового проекта Python. Создайте новый каталог (у меня AI_translator) и запустите инструкцию по созданию venv:
Чтобы активировать виртуальную среду:
С активированным venv:
Если модель, которую вы собираетесь использовать, имеет веса, созданные с помощью Tensorflow (см. следующий раздел), вы также должны установить tensorflow.
Создание структуры папок и загрузка языковой модели
Ядром этого приложения является модель языкового перевода. Я выбрал свой целевой язык (итальянский) и исходный язык текста (английский). Это очень важно: модели перевода обучаются в определённом порядке:
Приведённая выше модель предназначена для переводов: в частности, с английского на корейский. Помните, что в Hugging Face Hub модели перевода обычно работают только для пары и в определенном порядке.
Вы можете найти коллекцию удивительных моделей перевода в репозитории Hugging Face Исследовательской группы языковых технологий Хельсинкского университета.
Здесь 1440 языковых моделей. Мне нужна модель для переводов с английского на итальянский: поэтому мне нужно найти что-то, что заканчивается на en-to-it.
Чтобы показать вам пример модели тензорного потока, я также выберу https://huggingface.co/Helsinki-NLP/opus-mt-tc-big-en-es , предназначенный для перевода испанского с английского.
Как вы можете видеть, эта модель говорит мне, что у нас есть веса, доступные как в PyTorch, так и в Tensorflow.
- Создайте подпапки model_it и model_es
- Перейдите на вкладку файлов карты модели и загрузите все файлы, как указано ниже: для итальянской модели загрузите в каталог model_it
для англо-испанской модели, которую нужно скачать в каталоге model_es :
Как только все файлы загружены в соответствующие подпапки, всё готово.
Тестирование модели
Заметка: если веса модели в формате .h5, вам необходимо установить tensorflow (как в примере выше)
Помните, что вам нужно указать структуру tensorflow , когда вы вызываете свою модель с помощью from_tf=True. Должно получиться что-то вроде этого:
Создайте новый файл с именем test-en-it.py: мы будем использовать его для проверки функциональности конвейера перевода с моделью pytorch перед тем, как приступить к созданию пользовательского интерфейса.
Объяснение кода
Мы импортируем ядро взаимодействия модели: pytorch и библиотеку трансформеров. Затем мы устанавливаем контрольную точку для локальной загруженной модели, сохраняя её путь Model_IT = ‘./model_it/’.
Строка для перевода хранится в переменной English. Затем мы инициализируем вызов библиотеки преобразования для токенизатора, модели и конвейера, который мы хотим выполнить: обратите внимание, что мы передаём путь (переменная model_IT) как для токенизатора, так и для модели. Конвейер создаётся с помощью:
Если мы запустим код, мы увидим что-то вроде этого:
Объяснение кода тензорного потока
Создайте новый файл с именем test-en-es.py: мы будем использовать его для проверки функциональности конвейера перевода с моделью тензорного потока, прежде чем приступить к созданию пользовательского интерфейса. Код для файла приведён ниже (пояснения будут следовать): единственное изменение в вызове модели:
ПРИМЕЧАНИЕ: как видите, к вызову модели был добавлен только один параметр (from_tf=True): это будет очень полезно, когда вы захотите поэкспериментировать с другими моделями Hugging Face.
Создание интерфейса Streamlit
Создайте новый файл с именем st-yourTranslationApp.py: он будет включать базовый графический веб-интерфейс с использованием Streamlit.
Streamlit — это библиотека для создания веб-приложений с данными без необходимости знать какие-либо интерфейсные технологии, такие как HTML и CSS. Если вы хотите узнать больше, ознакомьтесь с документацией здесь.
С приведённым выше кодом все основные операции импорта выполнены, а общая настройка страницы с потоковым освещением завершена.
ПРИМЕЧАНИЕ: Не забудьте импортировать тензорный поток, если ваша модель имеет формат .h5 .
Базовая структура выполнена здесь: обратите внимание, что я создал 3 столбца и указал соотношение 3. Поскольку я хочу, чтобы кнопка располагалась по центру, мы вызываем виджеты в столбце 2 и указываем расширение его ширины до ширины столбцов.
Конвейер перевода будет вызываться только при нажатии кнопки btn_translate .
Объяснение кода
2 вложенных оператора if проверяют условие нажатия кнопки (if btn_translate) и присутствия английского текста для перевода (if English:). После этого мы используем text-splitter, чтобы разбить любой длинный текст на более мелкие части, чтобы не переполнить максимальное количество токенов.
Вызов конвейера такой же, как и в тестовом коде из предыдущего раздела, за исключением необходимости итераций. Мы разделили текст на части, поэтому нам нужно получить результат конвейера перевода для каждой части, а затем объединить их:
Наконец, мы можем отобразить в виджете text_area финальный текст нашего перевода:
Теперь вы можете копировать и вставлять очень длинный текст и получать перевод с помощью вашего приложения AI с открытым исходным кодом.
Вот пример с текстом, взятым из статьи Теда Бауэра на Medium:
Я надеюсь, что данная статья была для вас интересной и полезной!