Инструкция по аннотации данных
DeepKE — это инструмент для извлечения и построения графа знаний с открытым исходным кодом, который поддерживает инструменты извлечения знаний с ограниченными ресурсами, длинным текстом и мультимодальными данными. DeepKE основан на PyTorch и может реализовывать функции распознавания именованных сущностей, извлечения отношений и извлечения атрибутов.
Эта версия, DeepKE-cnSchema, представляет собой готовую версию, которая позволяет пользователям загружать модель для извлечения сущностных и реляционных знаний, поддерживающую cnSchema.
Глава | Описание |
---|---|
Введение | Основные принципы и поддерживаемые типы данных DeepKE |
Ручная аннотация данных | Как вручную аннотировать данные |
Автоматическая аннотация данных | Как автоматически аннотировать данные на основе DeepKE |
Часто задаваемые вопросы | Часто задаваемые вопросы |
Ссылки | Технические отчёты для этого каталога |
DeepKE — это инструмент с открытым исходным кодом для извлечения и построения графов знаний, который поддерживает инструменты для работы с данными с ограниченными ресурсами, длинными текстами и мультимодальной информацией. DeepKE, основанный на PyTorch, может реализовывать функции распознавания именованных объектов, извлечения связей и извлечения признаков. Также доступны подробные документация, учебники Google Colab, онлайн-презентации и слайд-шоу.
Известно, что данные очень важны для обучения модели. Чтобы упростить использование этого инструмента, DeepKE предоставляет подробную аннотацию данных идентификации сущностей и извлечения связей, чтобы пользователи могли получать обучающие данные вручную или автоматически. Аннотированные данные могут быть непосредственно использованы DeepKE для обучения модели.
doccano
— это инструмент ручной аннотации данных с открытым исходным кодом. Он предоставляет функции аннотации для классификации текста, пометки последовательностей и последовательности к последовательности. Таким образом, вы можете создавать размеченные данные для анализа тональности, распознавания именованных сущностей, текстовых резюме и так далее. Просто создайте проект, загрузите данные и начните маркировку, и вы сможете создать набор данных, готовый к обучению DeepKE
, в течение нескольких часов. Использование doccano
для извлечения данных аннотации для распознавания сущностей и отношений описано ниже.
Подробнее об установке и настройке doccano см. Github(doccano). Установлено и запущено. В браузере перейдите по адресу http://0.0.0.0:8000
и нажмите Войти.
Создайте проект. Нажмите Создать в верхнем левом углу, чтобы перейти к следующему интерфейсу.
doccano
поддерживает различные форматы текста. Различия заключаются в следующем:
Textfile
: загруженный файл имеет формат txt
. При разметке весь файл txt
отображается как одна страница содержимого.TextLine
: загруженный файл имеет формат txt
. При разметке строка текста в файле txt
отображается как страница содержимого.JSONL
: сокращение от JSON Lines
, где каждая строка является допустимым значением JSON
;CoNLL
: файл в формате CoNLL
. Каждая строка содержит серию слов, разделённых табуляцией.Добавьте метки задач
Span
и Relation
. Здесь Span
относится к целевому фрагменту информации в исходном тексте, то есть к сущности определённого типа при распознавании сущностей.PER
, LOC
, ORG
и т. д.p
для метки PER
) и определите цвет метки.Разметка данных
Span
для людей и мест.Щёлкните Параметры, Экспортировать набор данных в столбце Набор данных, чтобы экспортировать размеченные данные.
Размеченные данные хранятся в том же текстовом файле, по одной строке на образец и в формате jsonl
, который содержит следующие поля:
id
: уникальный идентификатор ID
образца в наборе данных.text
: необработанные текстовые данные.entities
: метки Span
, содержащиеся в данных, каждая метка Span
содержит четыре поля:
id
: уникальный идентификационный ID
метки Span
в наборе данных.start_offset
: начальная позиция метки Span
.end_offset
: следующая позиция с конца метки Span
.label
: тип метки Span
.Пример экспортированных данных
{
"id":10,
"text":"University of California is located in California, United States.",
"entities":[
{
"id":15,
"label":"ORG",
"start_offset":0,
"end_offset":24
},
{
"id":16,
"label":"LOC",
"start_offset":39,
"end_offse":49
},
{
"id":17,
"label":"LOC",
"start_offset":51,
"end_offset":64
}
],
"relations":[
]
}
DeepKE
— это файл txt
, в котором каждая строка включает слова, разделители и метки (см. формат данных CoNLL
). Экспортированные данные будут предварительно обработаны в формат ввода DeepKE
для обучения, пожалуйста, перейдите к подробному файлу README
Dataset:
https://github.com/OYE93/Chinese-NLP-Corpus/tree/master/NER/People's Daily. Это набор данных для NER, сосредоточенный на типах именованных сущностей, связанных с людьми (PER), местоположениями (LOC) и организациями (ORG).
В примере словаря на английском языке мы адаптируем набор данных Conll. Он содержит именованные сущности, связанные с людьми (PER), местоположениями (LOC) и другими объектами (MISC). Вы можете получить набор данных Conll с помощью следующей команды:
wget 120.27.214.45/Data/ner/few_shot/data.tar.gz
Предоставленный словарь из Google Drive:
Из BaiduNetDisk:
Если вам нужно создать собственный словарь, обратитесь к предоставленному формату словаря (csv).
Сущность | Метка |
---|---|
Вашингтон | LOC |
... | ... |
Исходный файл
Формат входного словаря — csv (содержит два столбца: сущности и соответствующие метки). Данные, которые должны быть автоматически помечены (формат txt и разделены строками, как показано на рисунке ниже), должны быть помещены в путь source_data, скрипт будет проходить по всем файлам формата txt в этой папке и автоматически отмечать строку за строкой.
Выходной файл
Выходной файл (соотношение распределения обучающего набора, проверочного набора и тестового набора можно настроить) можно напрямую использовать в качестве обучающих данных в DeepKE.
Среда
Реализация среды: jieba = 0.42.1
Описание аргументов
— language: cn или en — source_dir: путь к корпусу (проходить по всем файлам в формате txt под этой папкой, автоматически отмечать построчно, по умолчанию — source_data) — dict_dir: путь к словарю сущностей (по умолчанию — vocab_dict.csv) — test_rate, dev_rate, test_rate: соотношение обучающего набора, проверочного набора и тестового набора (пожалуйста, убедитесь, что сумма равна 1, по умолчанию 0,8:0,1:0,1)
Запуск
Для китайского языка:
python prepare_weaksupervised_data.py --language cn --dict_dir vocab_dict_cn.csv
Для английского языка:
python prepare_weaksupervised_data.py --language en --dict_dir vocab_dict_en.csv
Извлечение отношений (RE)
Мы предоставляем простой инструмент на основе дальнего надзора для маркировки меток отношений для наших задач RE.
Исходный файл
Исходный файл (набор данных, который должен быть размечен) указан в формате .json и включает одну пару сущностей: головную сущность и хвостовую сущность соответственно. Каждый фрагмент данных должен содержать как минимум следующие пять элементов: предложение, голова, хвост, head_offset, tail_offset. Подробный шаблон json выглядит следующим образом:
[
{
"sentence": "This summer, the United States Embassy in Beirut, Lebanon, once again made its presence felt on the cultural scene by sponsoring a photo exhibition, an experimental jazz performance, a classical music concert and a visit from the Whiffenpoofs, Yale University's a cappella singers.",
"head": "Lebanon",
"tail": "Beirut",
"head_offset": "50",
"tail_offset": "42",
//...
},
//...
]
Файл тройки
Пары сущностей в исходном файле будут сопоставляться с тройками в файле тройки. Пары сущностей будут помечены типом отношения, если они совпадают с тройками в тройном файле. Если совпадений нет, пары будут помечены как тип None.
Мы предоставляем английский и китайский файлы тройки соответственно. Английский файл тройки взят из набора данных NYT, который содержит следующие отношения. ``` "/business/company/place_founded", "/people/person/place_lived", "/location/country/administrative_divisions", "/business/company/major_shareholders", "/sports/sports_team_location/teams", "/people/person/religion", "/people/person/place_of_birth", "/people/person/nationality", "/location/country/capital", "/business/company/advisors", "/people/deceased_person/place_of_death", "/business/company/founders", "/location/location/contains", "/people/person/ethnicity", "/business/company_shareholder/major_shareholder_of", "/people/ethnicity/geographic_distribution", "/people/person/profession", "/business/person/company", "/people/person/children", "/location/administrative_division/country", "/people/ethnicity/people", "/sports/sports_team/location", "/location/neighborhood/neighborhood_of", "/business/company/industry"
The Chinese triple file are from [here](https://github.com/DannyLee1991/ExtractTriples) с такими типами отношений:
```json
{"объект_типа": "место", "предикат": "родина", "субъект_тип": "человек"}
{"объект_типа": "человек", "предикат": "отец", "субъект_тип": "человек"}
{"объект_типа": "место", "предикат": "штаб-квартира", "субъект_тип": "компания"}
{"объект_типа": "место", "предикат": "место рождения", "субъект_тип": "человек"}
{"объект_типа": "цель", "предикат": "цель", "субъект_тип": "организм"}
{"объект_типа": "число", "предикат": "площадь", "субъект_тип": "административный район"}
{"объект_типа": "текст", "предикат": "сокращение", "субъект_тип": "организация"}
{"объект_типа": "дата", "предикат": "дата выхода", "субъект_тип": "фильм"}
{"объект_типа": "человек", "предикат": "жена", "субъект_тип": "человек"}
{"объект_типа": "музыкальный альбом", "предикат": "принадлежность альбома", "субъект_тип": "песня"}
{"объект_типа": "число", "предикат": "уставной капитал", "субъект_тип": "предприятие"}
{"объект_типа": "город", "предикат": "столица", "субъект_тип": "страна"}
{"объект_типа": "человек", "предикат": "режиссёр", "субъект_тип": "фильм"}
{"объект_типа": "текст", "предикат": "имя", "субъект_тип": "историческая личность"}
{"объект_типа": "число", "предикат": "рост", "субъект_тип": "человек"}
{"объект_типа": "компания", "предикат": "производитель", "субъект_тип": "фильм"}
{"объект_типа": "число", "предикат": "срок обучения", "субъект_тип": "специальность"}
{"объект_типа": "дата", "предикат": "дата рождения", "субъект_тип": "человек"}
{"объект_типа": "человек", "предикат": "продюсер", "субъект_тип": "фильм"}
{"объект_типа": "человек", "предикат": "мать", "субъект_тип": "человек"}
{"объект_типа": "человек", "предикат": "сценарист", "субъект_тип": "фильм"}
{"объект_типа": "страна", "предикат": "гражданство", "субъект_тип": "человек"}
{"объект_типа": "число", "предикат": "высота над уровнем моря", "субъект_тип": "место"}
{"объект_типа": "сайт", "предикат": "веб-сайт публикации", "субъект_тип": "онлайн-роман"}
{"объект_типа": "человек", "предикат": "муж", "субъект_тип": "человек"}
{"объект_типа": "текст", "предикат": "династия", "субъект_тип": "историческая личность"}
{"объект_типа": "текст", "предикат": "национальность", "субъект_тип": "человек"}
{"объект_типа": "текст", "предикат": "номер", "субъект_тип": "историческая личность"}
{"объект_типа": "издательство", "предикат": "издательство", "субъект_тип": "книга"}
{"объект_типа": "человек", "предикат": "ведущий", "субъект_тип": "телешоу"}
{"объект_типа": "текст", "предикат": "код специальности", "субъект_тип": "специальность"}
{"объект_типа": "человек", "предикат": "певец", "субъект_тип": "песня"}
{"объект_типа": "человек", "предикат": "автор слов", "субъект_тип": "песня"}
{"объект_типа": "человек", "предикат": "главный герой", "субъект_тип": "онлайн-роман"}
{"объект_типа": "человек", "предикат": "председатель совета директоров", "субъект_тип": "компания"}
{"объект_типа": "дата", "предикат": "дата основания", "субъект_тип": "организация"}
{"объект_типа": "школа", "предикат": "альма-матер", "субъект_тип": "человек"}
{"объект_типа": "число", "предикат": "занимаемая площадь", "субъект_тип": "организация"}
{"объект_типа": "язык", "предикат": "официальный язык", "субъект_тип": "страна"}
{"объект_типа": "текст", "предикат": "почтовый индекс", "субъект_тип": "район"}
{"объект_типа": "число", "предикат": "численность населения", "субъект_тип": "район"}
{"объект_типа": "город", "предикат": "расположен в городе", "субъект_тип": "достопримечательность"}
{"объект_типа": "человек", "предикат": "автор", "субъект_тип": "литературное произведение"}
{"объект_типа": "дата", "предикат": "дата основания", "субъект_тип": "компания"}
{"объект_типа": "человек", "предикат": "композитор", "субъект_тип": "песня"}
{"объект_типа": "климат", "предикат": "климат", "субъект_тип": "район"}
{"объект_типа": "человек", "предикат": "гость", "субъект_тип": "телешоу"} **Предикат**: главный актёр.
**Тип субъекта**: кинофильм.
**Объект**: кинофильм.
**Предикат**: основан на.
**Тип субъекта**: кинофильм.
**Субъект**: основатель.
**Тип**: организация.
*Предикат* не указан.
Вы можете использовать свой собственный файл троек, но формат файла должен быть .csv и соответствовать следующему шаблону:
голова | хвост | отношение |
---|---|---|
Ливан | Бейрут | /location/location/contains |
... | ... | ... |
Имена выходных файлов: labeled_train.json, labeled_dev.json, labeled_test.json для наборов данных train, dev и test соответственно. Формат выходного файла следующий:
[ { "предложение": "Этим летом посольство Соединённых Штатов в Бейруте, Ливане, снова заявило о себе на культурной сцене, спонсируя фотовыставку, экспериментальное джазовое выступление, концерт классической музыки и визит группы Whiffenpoofs, исполнителей а капелла Йельского университета.", "голова": "Ливан", "хвост": "Бейрут", "смещение головы": "50", "смещение хвоста": "42", "отношение": "/location/location/содержит", //... }, //... ]
Мы автоматически разделяем исходные данные на три части с соотношением 0,8:0,1:0,1. Вы можете установить собственное соотношение.
python ds_label_data.py --language en --source_file source_data.json --triple_file triple_file.csv
В: Сколько данных нужно пометить?
В: Доступны ли какие-либо размеченные данные?
В: Автоматическая маркировка данных для обучения моделей не работает
Если ресурсы или методы этого проекта были полезны для вашего исследования, вы можете сослаться на следующую статью в своей диссертации.
@article{zhang2022deepke, title={DeepKE: A Deep Learning Based Knowledge Extraction Toolkit for Knowledge Base Population}, author={Zhang, Ningyu and Xu, Xin and Tao, Liankuan and Yu, Haiyang and Ye, Hongbin and Qiao, Shuofei and Xie, Xin and Chen, Xiang and Li, Zhoubo and Li, Lei and Liang, Xiaozhuan and others}, journal={arXiv preprint arXiv:2201.03335}, year={2022} }
Содержание этого проекта предназначено только для технических исследовательских целей и не является основанием для каких-либо окончательных выводов. Пользователи могут использовать модель по своему усмотрению в рамках лицензии, но мы не несём ответственности за прямой или косвенный ущерб, возникший в результате использования содержимого проекта.
Если у вас есть какие-либо вопросы, пожалуйста, отправьте их в GitHub Issue.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )