Open 666-zhang opened 2 years ago
你好,这里的“字典”应该是描述错误,就是类似下面列表的形式, [头实体, 头实体首字符在文本的位置, 头实体尾字符在文本的位置, 关系类型, 尾实体, 尾实体首字符在文本的位置, 尾实体尾字符在文本的位置] 具体的输入格式你可以参考example文件下CMeIE.ipynb中train_df的格式。例子如下: [[产后抑郁症, 0, 4, 鉴别诊断@疾病, 轻度情绪失调, 14, 19]]
感谢回复,我输入的是如下的数据格式:
在model.fit的步骤会报错,在其中
# 计算损失 logits, loss = self._get_train_loss(inputs, outputs, **kwargs)
这一步时会显示输入数据的shape与期待不符:
ValueError: Using a target size (torch.Size([1, 100, 1])) that is different to the input size (torch.Size([1, 100])) is deprecated. Please ensure they have the same size.
请问输入的格式哪里有问题呀?
我通过输入单条数据复现出了相同的错误,定位到的是CasRelLoss中包含的torch.nn.functional.binary_cross_entropy报的错。输入多条数据的时候不存在这个错误。
我尝试修复了下,临时的修复方案是在ark_nlp.factory.loss_function.casrel_loss的_compute_loss中将gold也展开。比如将
pred = pred.squeeze(-1)
修改为
pred, gold = pred.squeeze(-1), gold.squeeze(-1)
我将输入数据改为多条:
在model.fit
阶段没有问题,在predict单条text的时候只返回一个空的集合,
请问predict的时候对于text的格式有什么要求吗?或者说怎样能得到和输入的label一样格式的输出?
这个情况应该是输入的text中没有包含任何关系,所以结果为空,造成的原因是你用的数据太少了,建议你先用CMeIE的数据试试。
输出格式你可以自己根据需求自行处理,目前的模型的输出格式和输入label略有不同。
收到谢谢
请问这个报错可能是什么原因呢? token_ids, masks, text_len, sub_heads, sub_tails, sub_head, sub_tail, obj_heads, obj_tails, triples, tokens, token_mapping = zip(*batch) ValueError: not enough values to unpack (expected 12, got 0) 这是我的数据集
请问关系抽取中输入数据的格式是什么样子的?
“列表中每个元素是如下组织的字典”([头实体, 头实体首字符在文本的位置, 头实体尾字符在文本的位置, 关系类型, 尾实体, 尾实体首字符在文本的位置, 尾实体尾字符在文本的位置])
以上所说的字典是什么意思?没太理解