Huggingface知识图谱任务

任务描述

对文本内容完成实体抽取,建立不同实体之间的联系

输入句子文本

输出主体(model_s)、输出与该主体有关的一切客体(model_o)

例如主体为百日咳,客体就为症状、病因、相关疾病等

text = '据报道称,新冠肺炎患者经常会发热、咳嗽,少部分患者会胸闷、乏力,其病因包括: 1.自身免疫系统缺陷\n2.人传人。'  # content是输入的一段文字
res = medical_re.get_triples(text, model4s, model4po)
print(json.dumps(res, ensure_ascii=False, indent=True))

针对输入的文本建立以下的关系:

运行demo发生报错

OSError: Incorrect path_or_model_id: '../Model_name/13B_base_hf'. Please provide either the path to a local folder or the repo_id of a model on the Hub.

 是因为写地址的时候需要用\\不然\t\n之类的会读取异常

关系抽取模型

主文件下面的model_re文件

(核心)DataLoader处理的输入和标签

预处理完的数据

是一个列表,列表中每个元素可以看作是字典,共两个key("text","spo_list(主体-分类-客体)*n")

以下是用于训练的数据 :

 

generator的迭代对象

对预处理的训练数据self.data继续处理成两个模型的输入和标签:

self.data包含文本,以及spos_list(若干主体-分类-客体)

提取的标签作用如下:

1.找主体,需要模型判断出主体的start和end

2.找客体,需要模型判断出客体属于哪一类别并且找出start和end

 Yield



batch_token_ids        ‘text’的ID,batch=1,max_length=256


batch_mask_ids,        注意力mask,标注textID中padding的字符


batch_segment_ids,     标注text文本中句子属于第几句,此任务text中只有一句


batch_subject_labels   对于每一个text字符中属于主体的起始或终止的标签


batch_subject_ids,   标记主体的起始位置和终止位置

 batch_object_labels,每个字符在对应类别上的属于客体的起始和结束的标记

模型训练过程 

model_s

判断主体的模型:
model4s(batch_token_ids(文本), batch_mask_ids, batch_segment_ids)
输出:batch_subject_labels_pred(文本每个词属于strat,end的概率), hidden_states
标签:batch_subject_labels

 hidden,每个词的768维度向量

output

  output = self.sigmoid(self.linear(self.dropout(hidden_states))).pow(2)

sigmoid的作用是把特征向量映射到0-1之间,对每个词预测为start和end的概率 

与标签计算损失

 model_o

根据前面的model的输出的隐藏状态(每个词的特征向量)来判断每个词可能的分类

判断客体的模型
model4po(hidden_states(来自model_s的隐藏状态), batch_subject_ids(主体的strat,end), batch_mask_ids)
输出:batch_object_labels_pred(每个词对应23个分类的客体的start和end的概率)
标签:batch_object_labels

 问题:做出分类的依据是客体和主体的关系,但是前面模型输出的hidden是各个词的特征

解决:按照batch_mask_ids找到主体的start和end的特征,然后把每个词的特征都和这两特征相加(用一个linear肯定更好),这时候每个词的特征都包含自己和主体的信息, 送入线性层再套一个sigmoid就能变成分类概率了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值