Наше руководство по обработке естественного языка на языках мира

На первый взгляд, в обработке естественного языка (NLP) нет недостатка в ресурсах. Эта область может похвастаться активным исследовательским сообществом, которое постоянно создает и совершенствует модели для таких вариантов использования, как ответы на вопросы, распознавание именованных сущностей, анализ настроений и многое другое. Большие наборы данных — обязательное условие для любой языковой модели на основе Transformer — существуют для множества различных областей, и новые появляются с невероятной скоростью.

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

Обзор многоязычного ландшафта НЛП

Мы используем термин «ресурсы НЛП» для описания как наборов данных, так и моделей. Как и всем моделям машинного обучения (ML), моделям НЛП нужны наборы данных для успешного изучения представления языка. Общая языковая модель, такая как BERT, нуждается в большом немаркированном корпусе для изучения языкового представления. И наоборот, модели для конкретных задач, таких как ответы на вопросы или анализ настроений, требуют специальных помеченных наборов данных. Мы поговорим о маркировке позже, но давайте сначала посмотрим на состояние ресурсов НЛП для языков мира.

Наборы данных

Любой набор данных может быть набором данных. Однако языковые модели на основе Transformer требуют очень больших объемов данных. Например, для обучения модели BERT для конкретного языка используется вся Википедия на этом языке. Википедия — доступный и относительно сбалансированный набор данных общего назначения, что делает его вполне подходящим для поставленной задачи. Но проблемы нехватки данных затрудняют обучение языковых моделей для недопредставленных языков.

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

Модели

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

Та же тенденция, которую мы наблюдали в отношении наборов данных, сохраняется и в отношении обученных моделей. Модели BERT существуют для всех языков, для которых имеется достаточно ресурсов: английский, немецкий, китайский, японский и многие другие. Существуют даже модели BERT для предметно-ориентированных приложений, например ClinicalBERT для медицинской (английской) терминологии. На данный момент не существует языковой модели на основе Transformer для местного африканского языка.

До сих пор мы говорили об одноязычных моделях, то есть о моделях, специализирующихся только на одном языке. С другой стороны, многоязычные модели, такие как M-BERT от Google и XLM-Roberta от Facebook AI, обучаются одновременно на многих языках. Идея многоязычной установки заключается в том, что языки с низким уровнем ресурсов получат преимущества от языков с более высокими ресурсами за счет межъязыкового переноса.

Наборы данных и модели для ответов на вопросы

Ответы на вопросы (QA) и семантический поиск находятся в центре структуры Haystack для компонуемого НЛП. Многие наборы данных QA следуют стандарту, установленному Стэнфордским набором данных для ответов на вопросы (SQuAD). В то время как последняя версия англоязычного SQuAD состоит из 150 000 помеченных примеров, наборы данных QA для других языков обычно намного меньше.

Чтобы создать набор данных SQuAD, аннотаторы задают вопросы и аннотируют соответствующие отрывки ответов в статье из Википедии. В SQuAD 2.0 также можно задать вопрос, на который нет ответа в данной статье. Это позволяет модели узнать, что на некоторые вопросы нельзя ответить с помощью данного фрагмента текста. Языковая модель Transformer общего назначения может быть настроена на SQuAD, в результате чего получится модель ответов на вопросы. Например, roberta-base-squad2 — это модель RoBERTa, настроенная на SQuAD 2.0.

Созданы SQuAD-подобные ресурсы для разных языков, таких как корейский и турецкий (около 70 000 и 9 000 размеченных примеров соответственно). Далее в этой статье мы рассмотрим создание наборов данных в стиле SQuAD для немецкого и французского языков, а также модели, обученные на них.

Где найти ресурсы НЛП на всех языках

Когда дело доходит до поиска моделей НЛП для языков мира, Модельный центр Hugging Face — хорошее место для начала. В настоящее время в нем более 22 000 моделей, которые можно фильтровать по языку и приложению. В дополнение к ответам на вопросы модели HF охватывают такие варианты использования, как обобщение, генерация текста и перевод. Эти модели работают из коробки — достаточно подключить их, скажем, к стогу сена, и модель готова к использованию.

В качестве примера давайте посмотрим на категорию ответов на вопросы на Hugging Face (HF). В нем перечислены 736 моделей для различных языков, среди которых европейские языки меньшинств, такие как каталонский, и азиатские языки, такие как бахаса Индонезия, хинди и вьетнамский.

Наборы данных более разбросаны по Интернету (как мы уже говорили ранее, набором данных может быть что угодно — даже, скажем, коллекция электронных писем на вашем жестком диске). Если вы ищете готовые наборы данных, хорошими отправными точками являются такие платформы, как Hugging Face, Kaggle и система поиска наборов данных Google. Полный список параллельных корпусов (используемых в машинном переводе) см. в Проекте OPUS. Если вас интересуют именно африканские языки, взгляните на работу Масахане, организации африканского НЛП.

Википедия и газетные корпуса отлично подходят для больших объемов одноязычных данных. С другой стороны, структурированная база знаний Викиданных может быть использована для создания параллельных или именованных корпусов. В некоторых случаях платформы социальных сетей могут быть настоящими золотыми приисками, когда речь идет о ресурсах для обработки естественного языка. Например, вы можете использовать обзоры Yelp для обучения классификатора настроений или получать твиты через Twitter API и использовать их для обучения своих моделей НЛП.

Как создать свои собственные ресурсы НЛП

Если вы не можете найти набор данных, подходящий для вашего варианта использования, или считаете, что существующие отсутствуют, вы можете создать свои собственные аннотированные ресурсы. Этот вариант имеет некоторые очевидные преимущества, такие как полный контроль над выбором данных и аннотацией. С другой стороны, аннотация данных может быть утомительной и дорогостоящей. В этом разделе мы хотим поделиться нашим собственным опытом создания наборов данных и моделей и показать вам, как вы можете использовать Haystack для простого создания собственных ресурсов НЛП.

Пример: немецкий

Для улучшения состояния НЛП на немецком языке требуется модель для немецкого языка. В течение четырех месяцев мы приступили к аннотированию набора данных для ответов на вопросы на немецком языке (состоящего из почти 14 000 размеченных примеров), который мы назвали GermanQuAD.

Одним из преимуществ создания собственных ресурсов является то, что вы устанавливаете свои собственные правила. Хотя мы в основном следовали соглашениям об аннотациях SQuAD, мы внесли небольшие изменения в те места, где сочли нужным. Например, мы уделили особое внимание созданию фрагментов ответов разной длины, чтобы модели могли научиться гибко адаптировать длину своих ответов к запросу. Более того, мы работали со штатной командой аннотаторов (а не с удаленными работниками с платформы Amazon Mechanical Turk), что позволило обеспечить тесное сотрудничество и регулярные проверки.

Усердная работа наших аннотаторов привела к созданию двух наборов данных (GermanQuAD для ответов на вопросы и GermanDPR для поиска документов). Мы использовали их для предварительной подготовки моделей для QA, DPR и переоценки документов, которые мы загрузили в хаб моделей Hugging Face. Наши эксперименты показывают, что модель, обученная на одноязычном наборе данных GermanQuAD, работает лучше, чем многоязычная модель. Мы рассматриваем это как веский аргумент для того, чтобы организации уделяли первоочередное внимание созданию одноязычных ресурсов НЛП. Чтобы узнать больше о процессе аннотирования и производительности модели, см. статью в нашем блоге Включение немецкого нейронного поиска и контроля качества.

Пример: французский

Мы уже рассмотрели два метода аннотирования больших наборов данных: аутсорсинг для оплачиваемых краудворкеров (SQuAD) и обучение собственной команды (GermanQuAD). Наши друзья из Эталаб пошли еще другим путем. Для своего набора данных вопросов и ответов PIAF для французского языка (около 4000 аннотированных примеров) они построили платформу аннотаций, чтобы облегчить работу добровольцев из краудсорсинга. Любой, кто знает французский и хочет пожертвовать временем для создания ресурсов НЛП для этого языка, может присоединиться к платформе.

Как и наши собственные результаты для немецкого языка, эксперименты Etalab показали, что одноязычные французские модели NLP (такие как CamemBERT или FlxyauBERT), точно настроенные на наборе данных PIAF, работают лучше, чем многоязычная модель, которая была обучена сразу на нескольких языках. Вы также можете ознакомиться с нашей статьей о подходе Etalab к семантическому поиску здесь.

Инструменты Haystack для создания ресурсов НЛП

Чтобы помочь вам в создании собственных наборов данных, Haystack предлагает ряд инструментов предварительной обработки. Используйте один из PDFToTextConverter, DocxToTextConverter или даже ImageToTextConverter для извлечения текстов из заданного формата файла. Вы даже можете использовать недавно реализованный AzureConverter для извлечения как текстов, так и таблиц.

Если, с другой стороны, вам все же нужно собирать тексты для своего корпуса, вы можете использовать Crawler. Просто передайте ему список URL-адресов и желаемую глубину сканирования, и он вернет документы, готовые к дальнейшей обработке. Для дальнейшей очистки ваших документов используйте Препроцессор. Он избавляется от нежелательного шаблонного материала и разбивает ваши тексты на отрывки одинакового размера. Наконец, у нас есть специальная функция clean_wiki_text для очистки текста из Википедии.

Инструмент аннотации стога сена

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

Наконец, чтобы еще больше ускорить процесс аннотирования вопросов, мы реализовали узел для генерации вопросов. Генератор вопросов читает ваши тексты и выдает возможные вопросы. Вы даже можете объединить QuestionGenerator и Reader в конвейер, который создает не только вопросы, но и ответы. Подробнее читайте в нашей статье Лучшие методы автоматизации рабочего процесса аннотирования.

Трюки для создания набора данных NLP в условиях ограниченных ресурсов

Что делать, если у вас просто нет времени или ресурсов для создания собственных наборов данных? Не волнуйтесь — другие умные люди столкнулись с той же проблемой и придумали хитрые решения. Простым методом создания набора данных является перевод существующих наборов данных. Фактически, первая модель ответов на вопросы для французского языка (до PIAF и FQuAD) была версией машинного перевода оригинального SQuAD. Конечно, этот метод работает только для языков с высококачественными моделями машинного перевода и, следовательно, исключает настоящие языки с низким уровнем ресурсов.

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

Присоединяйтесь к сообществу Haystack NLP

В этом сообщении блога мы рассмотрели потребность в ресурсах НЛП, выходящих за рамки английского языка. Присоединяйтесь к нашему сообществу и помогите нам собрать больше ресурсов для большего количества языков! Мы будем рады видеть вас на нашем канале Discord, где вы сможете общаться с другими пользователями Haystack, а также с командой разработчиков Deepset.

И последнее, но не менее важное: зайдите в наш репозиторий GitHub, чтобы проверить структуру Haystack для компонуемого НЛП — и пока вы там, не забудьте поставить нам звезду :)