Введение

Прошло примерно 7 недель с тех пор, как началось общение по НЛП. HuzaLabs и Localis представили стипендию NLP для машинного перевода и чат-ботов с искусственным интеллектом в Руанде при содействии GIZ, Центра цифровой трансформации Руанды и программы искусственного интеллекта FAIR-Forward. Учебная программа была сложной с самого начала, с большим количеством материала для изучения и большим количеством заданий, которые нужно было закончить. Сбор данных — это первый и самый важный этап в обеспечении успеха проекта НЛП или машинного обучения. Сказав это, в течение последних пяти недель мы имели дело с большим количеством данных, извлечением, очисткой, предварительной обработкой признаков и построением прогностических моделей.

Что такое НЛП?

Понимание и манипулирование человеческим языком.
○ Мы говорим, читаем, пишем
● Великий переход к компьютерам. Как заставить компьютер понимать язык, а также манипулировать им??
● Что составляет НЛП
○ Данные, вычисления, алгоритмы

История НЛП

Началось после Второй мировой войны
○ Основной целью был перевод сообщений
○ Работать с переводчиками было слишком дорого и требовалось время для передачи переведенного сообщения

В число охваченных задач на данный момент входят:

Извлечение данных

В этом разделе мы рассмотрели процесс извлечения данных из разных источников. К ним относятся извлечение данных с веб-сайтов с помощью веб-скрейпинга, документов pdf и word.

Предварительная обработка данных

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

Этапы предварительной обработки данных

  • Оценка качества данных.
  • Очистка данных.
  • Преобразование данных.
  • Сжатие данных.

В этом процессе мы пробовали различные методы очистки данных, в том числе Регулярное выражение или (Regex), которое является одним из самых мощных, гибких и эффективных подходов к обработке текста. Regex имеет свою собственную терминологию, условия и синтаксис; в некотором смысле это мини-язык программирования. Регулярные выражения можно использовать для добавления, удаления, изоляции и управления всеми видами текста и данных.

Обработка данных

● Цель состоит в том, чтобы уменьшить количество функций путем удаления разных форм
слов.
● Алгоритм определения основы, процедура приведения всех слов с одной и той же основой к общей форме, полезен во многих областях. компьютерной лингвистики и информационно-поисковой работы — Ловин
● Первый стеммер опубликован в 1968 году Джули Бет Ловинс
● В основном используемый Porter Мартином Портером в 1980 году

Мы использовали различные виды Stemmers

● Портер Стеммер
○ Мартин Портер, 1980 г.
○ Делает пять шагов, каждый со своими правилами сопоставления
○ Просто и быстро
● Snowball Stemmer
○ Также Мартин Porter
○ Также известен как English Stemmer
○ Быстрее и точнее, чем Porter Stemmer
● Lancaster Stemmer
○ Простой
○ Приводит к неправильному определению корней слов, что приводит в бессмысленные слова
● Regexp Stemmer
○ Использует регулярное выражение
○ Подстрока, соответствующая регулярному выражению, будет отброшена

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

● При работе со стеммерами некоторые слова трудно привести к корневой форме. Пример Научен, лучше
● В таких случаях используется морфологический анализ, чтобы получить правильную корневую форму слова
● Это более точно, чем определение основы

Токенизация

Токенизация — это процесс, при котором часть конфиденциальных данных, например номер кредитной карты, заменяется суррогатным значением, известным как токен. Конфиденциальные данные, как правило, должны храниться в одном централизованном месте для последующего использования и требуют надежной защиты вокруг них.

мы использовали токенизацию для подготовки текстовых данных и преобразования данных в словесные токены, которые мы передаем модели для анализа.

BoW (Мешок слов)

• Это решает одну из проблем — горячее кодирование — частотность слов
• Создает вектор со словами и их частотами Шаги
• Разбивает предложения на слова
• Создает словарь со всеми уникальными словами и их индексы
• Создайте вектор, размер которого равен общему количеству уникальных слов
• Для каждого слова в предложении получите индекс и добавьте 1.
• Результатом будет вектор для каждого предложения такой же длины, как и все
уникальные слова во всех предложениях, с частотой каждого слова в одном
конкретном предложении. Если слова нет в этом предложении, частота равна 0

Модель перевода с использованием библиотеки EasyNMT

  • краткий обзор библиотеки EasyNMT
  • преимущества использования библиотеки EasyNMT для машинного перевода по сравнению с Hugging Face Pipeline
  • перевод предложений и перевод документации с использованием библиотеки EasyNMT

💥 Обзор библиотеки EasyNMT

Изображение автора

EasyNMT — это простая в использовании библиотека Python для машинного перевода SOTA. Эта библиотека разработана исследователями NLP из UKP Lab, TU Darmstadt. Некоторые из основных моментов этой библиотеки:

  • может выполнять машинный перевод SOTA всего за три строки кода.
  • поддерживает автоматическое определение языка для более чем 170 языков. Поэтому необязательно указывать код языка для исходной последовательности во время машинного перевода.
  • поддерживает перевод документов
  • поддерживает модели машинного перевода SOTA, такие как OPUS-MT, доработанные версии mBART50 и M2M100.

Библиотека EasyNMT поддерживает модели машинного перевода SOTA, основанные на Pytorch. Поэтому убедитесь, что PyTorch установлен для использования этой библиотеки.

💥 Демонстрация библиотеки EasyNMT

Вы также можете получить доступ к библиотеке EasyNMT через онлайн-демонстрацию. Вот скриншот онлайн-демонстрации EasyNMT. Онлайн-демонстрация основана только на модели OPUS-MT, поскольку модели OPUS-MT легче по сравнению с другими моделями SOTA MT, такими как mBART50 и M2M100.

Онлайн-демонстрация библиотеки EasyNMT доступна по этой ссылке

💥 Поддерживаемые модели SOTA MT

Библиотека EasyNMT поддерживает модели SOTA MT, такие как OPUS-MT, mBART-50 и M2M100. Вот краткий обзор этих моделей

Изображение автора

Из приведенной выше таблицы мы можем наблюдать следующие вещи

  • OPUS-MT намного легче по размеру по сравнению с другими моделями
  • Модели OPUS-MT поддерживают максимальную длину последовательности 512, в то время как все остальные модели поддерживают максимальную длину последовательности 1024.
  • В моделях OPUS-MT кодер и декодер состоят из 6 слоев каждый, в то время как во всех других моделях кодер и декодер состоят из 12 слоев каждый.

За исключением OPUS-MT, все остальные модели поддерживают максимальную длину последовательности 1024 токена. Если входная текстовая последовательность превышает максимальную длину последовательности, то входная последовательность разбивается на предложения, а затем каждое предложение переводится (это называется переводом документа).

💥 EasyNMT против Hugging Face MT Pipeline

В предыдущем сообщении блога мы видели преимущества использования конвейера Huggingface MT по сравнению с наивным выводом модели, т. Е. Использование конвейера позволяет избежать написания дополнительных строк кода для различных шагов в выводе модели. Короче говоря, мы можем сказать, что конвейер Hugging Face MT упрощает процесс MT. EasyNMT еще больше упрощает процесс МП. Вот преимущества EasyNMT по сравнению с конвейером HF

EasyNMT против HF Pipeline (изображение автора)

Вот преимущества библиотеки EasyNMT перед конвейером HF для машинного перевода.

  • Библиотека EasyNMT поддерживает автоматическое определение языка, благодаря чему нам не нужно указывать исходный язык.
  • Нет необходимости явно загружать токенизатор и модели с тонкой настройкой. Библиотека EasyNMT автоматически загружает токенизатор и модель для заданного имени модели.
  • EasyNMT поддерживает перевод документов. Когда длина исходной последовательности превышает максимальную длину последовательности модели, исходная последовательность разбивается на предложения, а затем каждое предложение переводится.
  • По умолчанию конвейер HF использует процессорное устройство. Если вы хотите использовать GPU, нам нужно явно указать устройство. EasyNMT автоматически использует устройство GPU, если оно доступно.

💥 Шаблон для машинного перевода с использованием библиотеки EasyNMT

Теперь мы увидим базовый шаблон для использования библиотеки EasyNMT для вывода NMT.

  • Шаг 1: Создайте объект модели, передав имя модели классу EasyNMT.

На основе заданного имени модели модель загружается, а затем загружается с использованием класса AutoModelForSeq2SeqLM.

  • Шаг 2: Переведите последовательность исходного текста, вызвав translate() с использованием объекта модели.

Мы должны передать последовательность исходного текста и идентификатор целевого языка в функцию translate(). Поскольку библиотека EasyNMT может автоматически определять язык, нам не нужно указывать идентификатор исходного языка.

Таким образом, мы можем выполнять машинный перевод SOTA с помощью библиотеки EasyNMT всего за несколько строк кода. Использование библиотеки EasyNMT для машинного перевода SOTA намного проще по сравнению с Hugging Face Pipeline.

💥 Машинный перевод с использованием библиотеки EasyNMT

Теперь мы увидим, как использовать библиотеку EasyNMT для перевода текстовых последовательностей с использованием моделей SOTA, таких как OPUS-MT, mBAR50 и M2M100.

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

Библиотека EasyNMT автоматически устанавливает устройство, т. е. если доступен графический процессор, модели запускаются на графическом процессоре. В противном случае модели запускаются на ЦП. Таким образом, нам не нужно указывать устройство явно.

перейдите по ссылке ниже, чтобы оформить заказ трансляционная модель с использованием библиотеки EasyNmt

Хакатон: веб-скрапинг и перевод

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

  • Цель хакатона
  • Техники и методы, используемые на хакатоне
  • Полученные результаты
  • Проблемы и извлеченные уроки
  • дальнейшая работа

Основная цель хакатона — помочь пользователям найти работу в сфере ИТ на сайтах Umucyo и Job in Rwanda на выбранном ими языке. Для этого хакатон был разделен на различные задачи.

Техники и методы, используемые на хакатоне

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

Извлечение данных

Начнем с извлечения данных. У нас есть два разных источника данных, как упоминалось выше. Для извлечения данных использовались отдельные библиотеки.

В то время как BeautifulSoup использовался для обхода HTML-кодов, библиотека запросов использовалась для запроса ссылки и получения страницы с нужными нам данными.

Все это началось с изучения ссылки, чтобы получить представление об используемых HTML-кодах, что позволило вам извлечь данные из Интернета.

2. Фильтрация данных

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

Таким образом, функция берет таблицу со всеми данными и столбцами таблицы для просмотра и возвращает таблицу только с ИТ-заданиями.

Функция очистки данных

3. Преобразование данных и API

Чтобы сделать его более увлекательным и востребованным, я создал API для размещения своей работы и выставил ее в Интернете, чтобы сделать ее доступной. API по умолчанию будет отображать ИТ-вакансии на английском языке. Поскольку целью является перевод, я использую библиотеку «EasyNMT» для перевода данных на разные языки. Пользователю нужно поставить язык, данные переведены.

Полученные результаты

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

Начнем с работы на веб-сайте Руанды. У нас есть таблица с 11 переменными и около 170 наблюдений, которые необходимо изменить по мере публикации на веб-сайте.

Работа в наборе данных Руанды

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

Продолжая Umucyo, у нас есть таблица из 50 наблюдений и 7 переменных.

Набор данных Умусио

На изображении вверху показана часть информации, взятой с веб-сайта Umucyo. У нас есть много столбцов, в которых, как показано на рисунке, указана информация о различных тендерах, включая имена, номера, статус и т. д.
Следующая задача — отделить ИТ-вакансии от двух наборов данных. На основании критериев 5 вакансий в области ИТ были расположены во всем наборе данных о вакансиях на веб-сайте Руанды.
Я размещаю данные в API, перевожу их на разные языки и показываю в виде файла JSON, чтобы сделать их более информативными. доступный. Пользователь должен указать язык, чтобы данные были переведены на этот язык. Данные будут переведены в любой формат, независимо от формата языка.

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

Полученное сообщение при вводе неправильного языка

Проблемы и извлеченные уроки

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

  1. Главной задачей всего хакатона является сбор информации с веб-сайта Umucyo, поскольку это динамический веб-сайт. Из этого я узнал, как очистить первую страницу веб-сайта, скопировав коды HTML в текстовый файл и пропустив его через него.
  2. С помощью EasyNMT я научился переводить текст на несколько языков.
  3. Самое главное, я научился размещать свои работы, чтобы ими можно было легко поделиться.

Дальнейшая работа

В ходе дальнейшей работы мы продолжим изучение «веб-сайта Umucyo» и извлечем дополнительные данные. Кроме того, необходимо разработать интерфейсную часть, чтобы результат был более удобным для пользователя.

вы можете получить код здесь: https://github.com/MRPatrick8/NLP/tree/main/Hackathon