1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openkg-deepke

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_TAG_CN.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 11:36 5964b57

Данные формата JSON:

{
    "id": 8,
    "text": "曾经去过深圳、珠海的俭汤青年农民回乡后意味深长地说,从南往北走,越走越保守。",
    "entities": [
        {
            "id": 9,
            "label": "LOC",
            "start_offset": 4,
            "end_offset": 6
        },
        {
            "id": 10,
            "label": "LOC",
            "start_offset": 7,
            "end_offset": 9
        },
        {
            "id": 11,
            "label": "PER",
            "start_offset": 12,
            "end_offset": 16
        }
    ],
    "relations": []
}

Данные формата JSONL:

{
  "id": 12,
  "text": "张廷智, 毕业于大连军医学院,从事中医治疗中晚期肿瘤临床工作30余年*张延智*大连军医学院*人物*学校",
  "entities": {
    "id": 18,
    "label": "PER",
    "start_offset": 0,
    "end_offset": 3
  },
  {
    "id": 19,
    "label": "ORG",
    "start_offset": 8,
    "end_offset": 14
  }
},
"relations": {
  "id": 1,
  "from_id": 18,
  "to_id": 19,
  "type": "毕业"
}
}
``` **Выходные файлы содержат три файла: example_train_cn.txt, example_dev_cn.txt и example_test_cn.txt.** Они соответствуют обучающему набору данных, проверочному набору и тестовому набору. Мы автоматически разделяем данные исходного файла на три части в соотношении 0,8:0,1:0,1. Формат выходных файлов следующий:

```h3 align="left">
    <img src="https://github.com/zjunlp/DeepKE/blob/main/example/ner/prepare-data/pics/output_data_format.png?raw=true", width=375>
</h3>

Среда:

  • Среда выполнения: 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

Извлечение отношений

Чтобы пользователи могли лучше использовать DeepKE для извлечения отношений, мы предоставляем простой в использовании инструмент для маркировки отношений на основе удалённого надзора.

Исходный файл:

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

[
  {
    "sentence": "如何演好自己的角色,请读《演员自我修养》《喜剧之王》周星驰崛起于穷困潦倒之中的独门秘笈",
    "head": "周星驰",
    "tail": "喜剧之王",
    "head_offset": "26",
    "tail_offset": "21",
    //...
    },
  //...
]

Файл триплетов:

Пары сущностей из исходного файла будут сопоставлены со строками в файле триплетов. Если совпадение успешно, пара сущностей будет помечена как ярлык отношения в триплете, если совпадения нет, она будет помечена как 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"

Китайский файл триплетов взят с GitHub и содержит следующие типы отношений:

{"object_type": "地点", "predicate": "祖籍", "subject_type": "人物"}
{"object_type": "人物", "predicate": "父亲", "subject_type": "人物"}
{"object_type": "地点", "predicate": "总部地点", "subject_type": "企业"}
{"object_type": "地点", "predicate": "出生地", "subject_type": "人物"}
{"object_type": "目", "predicate": "目", "subject_type": "生物"}
{"object_type": "Number", "predicate": "面积", "subject_type": "行政区"}
{"object_type": "Text", "predicate": "简称", "subject_type": "机构"}
{"object_type": "Date", "predicate": "上映时间", "subject_type": "影视作品"}
{"object_type": "人物", "predicate": "妻子", "subject_type": "人物"}
{"object_type": "音乐专辑", "predicate": "所属专辑", "subject_type": "歌曲"}
{"object_type": "Number", "predicate": "注册资本", "subject_type": "企业"}
{"object_type": "城市", "predicate": "首都", "subject_type": "国家"}
{"object_type": "人物", "predicate": "导演", "subject_type": "影视作品"}
{"object_type": "Text", "predicate": "字", "subject_type": "历史人物"}
{"object_type": "Number", "predicate": "身高", "subject_type": "人物"}
{"object_type": "企业", "predicate": "出品公司", "subject_type": "影视作品"}
{"object_text": "修业年限", "predicate": "学科专业"}
{"object_type": "Date", "predicate": "出生日期", "subject_type": "人物"}
{"object_type": "人物", "predicate": "制片人", "subject_type": "影视作品"}
{"object_type": "人物", "predicate": "母亲", "subject_type": "人物"}
{"object_type": "人物", "predicate": "编剧", "subject_type": "影视作品"}
{"object_type": "国家", "predicate": "国籍", "subject_type": "人物"}
{"object_type": "Number", "predicate": "海拔", "subject_type": "地点"}
{"object_type": "网站", "predicate": "连载网站", "subject_type": "网络小说"}
{"object_type": "人物", "predicate": "丈夫", "subject_type": **Перевод текста на русский язык:**

Человек может создавать собственные файлы с тройками, но необходимо задать файлу формат .csv и следовать следующему формату:  

| Главный объект | Конечный объект | Отношение |  
| :-- |:-- |:--|  
| Чжоу Синчи | Король комедии | Исполняет главную роль |  
| ... | ... | ...|

**Выходные файлы**  

Есть три выходных файла: labeled_train.json, labeled_dev.json и labeled_test.json, которые соответствуют обучающему, проверочному и тестовому наборам данных соответственно. Мы автоматически разделяем исходные данные на три части в соотношении 0,8:0,1:0,1. Формат выходного файла следующий:

```json
[
    {
    "sentence": "Как хорошо сыграть свою роль, прочитайте «Самосовершенствование актёра» и «Король комедии» Чжоу Синчи поднимается из бедности",
    "head": "Чжоу Синчи",
    "tail": "Король комедии",
    "head_offset": "26",
    "tail_offset": "21",
    "relation": "Исполняет главную роль",
    //...
    },
  //...
]

Описание параметров

  • language: 'en' соответствует данным на английском языке, 'cn' — на китайском.
  • source_file: исходный файл, который нужно пометить.
  • triple_file: файл с тройками.
  • test_rate, dev_rate и test_rate: доля обучающего, проверочного и тестового наборов данных соответственно. Необходимо убедиться, что сумма долей равна 1, по умолчанию это 0,8:0,1:0,1.

Запуск

python ds_label_data.py --language en --source_file source_data.json --triple_file triple_file.csv

FAQ

  • Вопрос: Сколько данных нужно помечать?

  • Ответ: Пометка — это процесс, требующий больших затрат времени и усилий. С идеальной точки зрения, чем больше данных помечено, тем лучше будет модель после обучения. Однако на практике это не всегда возможно. С одной стороны, необходимо учитывать реальные ресурсы и время; с другой стороны, следует рассмотреть влияние увеличения объёма данных на улучшение модели. Обычно для распознавания сущностей и извлечения отношений требуется около 10 тысяч данных.

  • Вопрос: Предоставляются ли размеченные данные?

  • Ответ: В распознавании сущностей предоставляются два словаря сущностей (на китайском и английском языках), которые могут автоматически помечать образцы.

  • Вопрос: Модель, обученная на автоматически размеченных данных, работает плохо.

  • Ответ: Плохая производительность модели может быть вызвана следующими причинами:

    • Автоматически размеченные и вручную размеченные данные содержат много шума.
    • Объём данных невелик: модель с большим количеством параметров может переобучаться на небольшом наборе данных.
    • Решение: можно рассмотреть проверку качества данных, использование полууправляемого обучения или Self-Traning, а также применение методов увеличения данных.

Цитирование

Если ресурсы или технологии этого проекта помогли вашей исследовательской работе, вы можете процитировать следующую статью в своей диссертации.

@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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/openkg-deepke.git
git@api.gitlife.ru:oschina-mirror/openkg-deepke.git
oschina-mirror
openkg-deepke
openkg-deepke
main