项目简介
YAYI-UIE是雅意中科闻歌算法团队研发的,基于百万级人工构造的高质量信息抽取数据,进行指令微调
支持多种信息抽取任务,包括命名实体识别(NER)、关系抽取(RE)和事件抽取(EE)
百万级语料,中文54%,英文46%,数据集涵盖12个领域,包括金融,社会,生物,商业,工业制造,化学,车辆,科学,疾病医疗,个人生活,安全和通用等,覆盖数百个场景
训练数据
百万级语料中文54%,英文46%;其中数据集包括12个领域包括金融,社会,生物,商业,工业制造,化学,车辆,科学,疾病医疗,个人生活,安全和通用。覆盖数百个场景
-
NER:中文覆盖28个实体类型包括人物,地缘政治,组织,身体部位,药物等,英文覆盖130个实体类型包括Animal, Weapon, Conference, Book等。
-
RE:中文覆盖232种关系包括买资,增持,重组,国籍,别名,亲属,入股,转让,导致,发生地点,制造商等,英文覆盖236种关系包括founded by,state or province of headquarters,employee of,occupation,creator等。
-
EE:中文覆盖84种事件类型,包括中标,高管变动,产品行为-发布,公司上市等,和203种论元,英文覆盖45种事件类型,包括Born, Demonstrate, Meet, End Organization, Divorce等,和62种论元。
运行方式
安装环境
-
下载本仓库内容至本地/远程服务器
git clone https://github.com/wenge-research/yayi-uie.git
cd yayi-uie
-
创建conda环境
conda create --name uie python=3.8
conda activate uie
-
安装环境
pip install -r requirements.txt
其中
torch
和
transformers
版本不建议低于推荐版本。
模型推理
模型已在我们的 Huggingface 模型仓库 开源,欢迎下载使用。以下是一个简单调用
YAYI-UIE
进行下游任务推理的示例代码,可在单张 A100/A800 等GPU运行,使用bf16精度推理时约占用 33GB 显存:
>>> import torch
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from transformers.generation.utils import GenerationConfig
>>> tokenizer = AutoTokenizer.from_pretrained("wenge-research/yayi-uie", use_fast=False, trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("wenge-research/yayi-uie", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
>>> generation_config = GenerationConfig.from_pretrained("wenge-research/yayi-uie")
>>> prompt = "文本:氧化锆陶瓷以其卓越的物理和化学特性在多个行业中发挥着关键作用。这种材料因其高强度、高硬度和优异的耐磨性,广泛应用于医疗器械、切削工具、磨具以及高端珠宝制品。在制造这种高性能陶瓷时,必须遵循严格的制造标准,以确保其最终性能。这些标准涵盖了从原材料选择到成品加工的全过程,保障产品的一致性和可靠性。氧化锆的制造过程通常包括粉末合成、成型、烧结和后处理等步骤。原材料通常是高纯度的氧化锆粉末,通过精确控制的烧结工艺,这些粉末被转化成具有特定微观结构的坚硬陶瓷。这种独特的微观结构赋予氧化锆陶瓷其显著的抗断裂韧性和耐腐蚀性。此外,氧化锆陶瓷的热膨胀系数与铁类似,使其在高温应用中展现出良好的热稳定性。因此,氧化锆陶瓷不仅在工业领域,也在日常生活中的应用日益增多,成为现代材料科学中的一个重要分支。\n抽取文本中可能存在的实体,并以json{制造品名称/制造过程/制造材料/工艺参数/应用/生物医学/工程特性:[实体]}格式输出。"
>>> # "" is a reserved token for human, "" is a reserved token for assistant
>>> prompt = "" + prompt + ""
>>> inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
>>> response = model.generate(**inputs, max_new_tokens=512, temperature=0)
>>> print(tokenizer.decode(response[0],skip_special_tokens=True))
github:https://github.com/wenge-research/YAYI-UIE