Семинар по spaCy на DH-2019

Не менее 28 участников конференции DH 2019 в Утрехте пришли на семинар по spaCy — быстрой и доступной библиотеке обработки естественного языка (NLP), которая объединяет современные технологии машинного обучения. Это была возможность узнать о spaCy и заполнить пробел между потребностями сообщества и техническими возможностями. Этот пост будет озвучивать идеи семинара, пока они еще свежи. При этом он будет опираться на диалог между учеными в области цифровых гуманитарных наук (DH) и сообществом разработчиков spaCy.

Семинар начался со вступительной сессии, которую вел Сет Бернстейн из Высшей школы экономики в Москве. Подобно аналогичным библиотекам NLP, таким как Stanford NLP или Natural Language Toolkit (NLTK), spaCy позволяет компьютерам идентифицировать особенности человеческого языка, такие как части речи, типы слов и сущности (такие как места, люди, эмоции). Без НЛП текст - это просто последовательность символов для компьютера. spaCy преобразует простой текст в объекты документа, диапазона и токена. Объект документа содержит исходный текст, а также списки компонентных предложений, сущностей и токенов. Каждый токен, в свою очередь, имеет более 60 атрибутов, включая корневую форму слова (лемму), тип сущности, часть речи, язык и множество другой соответствующей информации. Диапазон имеет аналогичные возможности для шаблонов и разделов текста. Всего с тремя строками кода текст теперь имеет функции для вычислительного анализа текста и языка.

from spacy.lang.ru import Russian

nlp = Russian()

doc = nlp(‘Более 28 ученых собрались в Утрехте на семинар DH2019 по spaCy, быстрой и доступной библиотеке обработки естественного языка (NLP)’)

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

Библиотека spaCy поощряет простоту, быстрое экспериментирование и настройку. Разнообразные предварительно обученные модели доступны из коробки для английского, немецкого и семи других языков. Разработчики spaCy имеют очень полезное приложение для визуализации и оценки того, подходят ли предварительно обученные модели для ваших задач распознавания именованных объектов. Простой встроенный инструмент displaCy позволяет легко увидеть похожие результаты для тегов части речи, зависимостей и других результатов ваших моделей.

Учитывая то, что языковая модель определяет, что в нашем тексте читается компьютером, участники семинара должны были озвучить ключевую мысль - возможность сформировать то, что модель способна «видеть». От проекта к проекту нас интересуют разные элементы. языка и содержания. Ни одна модель никогда не будет соответствовать каждому возможному исследовательскому проекту, поэтому нам больше всего нужен инструмент, который можно адаптировать к нашим текущим целям исследования. SpaCy удовлетворяет эту потребность. С помощью функции set_extension () мы можем добавить новые атрибуты в модель. В своем разделе семинара Дэвид Ласснер (TU Berlin) продемонстрировал, как добавлять пользовательские атрибуты к уровням документа, диапазона и токена. Не менее важно и то, что Дэвид показал, как импортировать теги и атрибуты из документа TEI в модель spaCy, используя преобразователь смещения, который он создал для мастерской. TEI - это отличный формат для хранения информации о тексте. Тем не менее, XML может быть трудно для неспециалистов работать с. С соответствующими тегами, загруженными в spaCy, мы можем быстро подготовить документы для вычислительного анализа.

Общей необходимостью среди DH является возможность загружать существующий документ TEI в языковую модель NLP, автоматически добавлять новую информацию с использованием модели (или моделей) и затем сохранять эту информацию обратно в файл TEI. Когда мы работаем с тысячами документов, может быть нецелесообразно размечать каждый документ вручную. Даже начальный раунд автоматической разметки может выполнять работу, которая может занять годы для одного человека и делает документы доступными для первоначальных экспериментов. Неизбежно мы учимся на первой итерации и вносим коррективы. Автоматическая маркировка позволяет экспериментировать и применять различные подходы к конкретному вопросу исследования.

Большинство предварительно обученных языковых моделей обучаются на текстах, которые принципиально не похожи на литературные и исторические документы, которые мы изучаем в цифровых гуманитарных науках. Например, модель, обученная по статьям Википедии 21-го века, не способна точно определить топонимы в документах раннего нового времени. Sweveland и Denmarke неправильно определены как организации, а не места. Нам нужен простой способ научить модель идентифицировать те элементы речи и содержания, которые имеют отношение к нашему исследованию. SpaCy предлагает два возможных подхода к этой проблеме. Используя текст из проекта Perseus, мы создали список из 2000 географических названий раннего нового времени. Затем мы преобразовали этот список в данные обучения. Мы можем загрузить существующую модель, обучить ее в нашей новой категории и затем сохранить новую модель на диск.

Следующий раздел преподавал Эндрю Янко из Хаверфорд-колледжа. Мы использовали инструмент, созданный командой spaCy, под названием Prodigy. Prodigy - это инструмент аннотации для машинного обучения. Это инструмент, который облегчает активное взаимодействие между человеком-аннотатором и моделью. Человек может вручную показать модельные примеры интересующего элемента. Термины семени предлагают дополнительные примеры того, что мы хотели бы, чтобы модель выучила. Во время обучения Prodigy отсортирует результаты модели и запросит ввод данных у пользователя. Если, например, только на 50% уверены, что «English Realme» - это место, оно попросит дать ответ «да» или «нет» от исследователя. «English wolle [wool]» также место? Нет. То, что разворачивается, является диалогом между ученым и моделью. Интересно наблюдать, как модель задает вопросы и учится (или не учится). Для тех, кто разочарован таинственным «черным ящиком» машинного обучения, Prodigy предлагает уникальную возможность вступить в диалог и научить модели машинных аспектов текста, которые имеют отношение к вашему исследованию. Только из 2000 образцов взятых из Persius и 200 аннотаций, мы смогли обучить модель на ранних современных английских топонимах примерно за 20 минут. Модель способна правильно идентифицировать места, которых не было в обучающих данных и с текстами, которые она никогда не видела.

В дискуссионном разделе семинара к нам присоединились Мэтью Хоннибал и Инес Монтани, которые являются создателями и основными разработчиками spaCy и Prodigy. Это дало ученым-исследователям возможность поделиться своими работами и интересами с сотрудниками библиотеки. В то время как ученые ЦО предпочитают программное обеспечение с открытым исходным кодом, мы редко участвуем в обсуждениях сообщества, которые устанавливают потребности и приоритеты для будущей работы по разработке. В ходе семинара и наших обсуждений возникло несколько потребностей, которые могут служить руководством для будущей работы.

Многие ученые в области цифровых гуманитарных наук используют разметку TEI для обогащения текстов информацией. Это может включать в себя лексические функции, а также конкретные идентификаторы для людей, мест и организаций. На нашем семинаре была потребность в сценариях для преобразования в / из TEI / XML в предпочтительный формат JSONL spaCy для обучения данных и файлов шаблонов. Дэвид Ласснер написал отличный конвертер, который преобразует документы TEI в простой текст, сохраняя информацию в разметке. Дальнейшая работа с этими сценариями упростит задачу преобразования TEI в форматы, необходимые для шаблонов семян SpaCy и обучающих данных. Они сделают одинаково простым запись данных обратно в TEI.

Некоторые участники семинара работают с языками, для которых не существует какой-либо языковой модели. Хотя документация spaCy о том, как добавить язык, достаточно хороша, можно предпринять дальнейшие усилия, чтобы объяснить процесс и сделать создание пользовательских языковых моделей более доступным для ученых ЦО. Текущая работа в Haverford по обучению языковой модели для Zapotec могла бы послужить эффективным примером и отправной точкой.

Создание и редактирование TEI требует значительных знаний в предметной области, а также знакомства с редакторами XML и XML, такими как Oxygen. Материалы семинара содержат сценарии для добавления аннотаций в Prodigy и сохранения их в виде разметки TEI. Для простых тегов это не проблема. Однако нам, как правило, нужно добавить не только , но и идентификатор человека и другие атрибуты тега.

<person sex=”intersex” role=”god” age=”immortal”>
<persName>Hermaphroditos</persName>
<persName xml:lang=”grc”>Ἑρμαφρόδιτος</persName>
</person>"

Дальнейшая работа необходима, чтобы найти способы удовлетворить эту потребность с помощью простого инструмента аннотации, который доступен как для студентов, так и для преподавателей. Brat, INCEpTION и аналогичные инструменты предлагают потенциальную альтернативу, но участникам семинара оказалось трудно учиться и использовать их в своей работе. Одним из подходов будет использование функции связывания именованных объектов spaCy для извлечения информации из базы знаний для обогащения наших тегов TEI. Например, студент выделит в тексте Гермафродитос, а пол, роль и греческое имя будут автоматически загружаться из DBpedia.

Будущая работа

Мастерская DH2019 spaCy установила и частично восполнила потребность в простых инструментах и ​​четких инструкциях для работы с TEI и spaCy. Мы можем обработать текст с настроенными моделями и сохранить результаты обратно в TEI. Отдельные исследователи и небольшие группы могут настраивать и обучать модели, соответствующие их конкретным целям. Эти процессы могут быть дополнительно упрощены и добавлены в пакет. Представьте, что вы просто набираете `pip install spacy-tei` и можете загружать документы TEI для анализа с помощью spaCy и Prodigy.

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

Дэвид, Сет и я хотели бы поблагодарить всех, кто присутствовал на семинаре. Наши тетради и материалы можно найти здесь. Мы надеемся, что мы предоставили вам инструменты и знания, которые вам понадобятся для использования spaCy в вашей работе. Пожалуйста, будьте на связи. Большое спасибо Мэтту и Инес за то, что присоединились к нам. Мы хотели бы продолжить разговор!