solkx / TOE

Apache License 2.0
10 stars 1 forks source link

如何快速的使用中文数据集? #2

Open nlper01 opened 1 year ago

nlper01 commented 1 year ago

大佬,请问如何快速使用你们之前的模型W2NER中提供的处理好的中文数据集,如Resume-zh,ontonote4.0等中文数据集,我直接运行并不能跑通,不知道哪里需要做修改?

solkx commented 1 year ago

我从github上下载发布的代码和数据后按照README.md的步骤是可以跑通的,不知道你是遇到了什么问题?

nlper01 commented 1 year ago

我从github上下载发布的代码和数据后按照README.md的步骤是可以跑通的,不知道你是遇到了什么问题?

大佬, 你发布的TOE项目上的数据和代码是可以跑通的,你提供的数据集是CADEC英文数据集,我现在想适配中文数据集,在数据集格式一样的前提(如下,Resume-zh)下中文数据集跑不通。 [{"sentence": ["高", "勇", ":", "男", ",", "中", "国", "国", "籍", ",", "无", "境", "外", "居", "留", "权", ","], "ner": [{"index": [0, 1], "type": "NAME"}, {"index": [5, 6, 7, 8], "type": "CONT"}], "word": [[0, 1], [2], [3], [4], [5, 6], [7, 8], [9], [10], [11, 12], [13, 14, 15], [16]]}]

我的config文件(W2NER中提供的resume-zh.json,增加了 "rounds", "alpha", "cr")如下,bert_config没有改动:

{
  "dataset": "resume-zh",

  "dist_emb_size": 20,
  "type_emb_size": 20,
  "lstm_hid_size": 512,
  "conv_hid_size": 96,
  "bert_hid_size": 768,
  "biaffine_size": 512,
  "ffnn_hid_size": 288,
  "dilation": [1,2,3],

  "emb_dropout": 0.5,
  "conv_dropout": 0.5,
  "out_dropout": 0.33,

  "epochs":10,
  "batch_size": 8,

  "learning_rate": 1e-3,
  "weight_decay": 0,
  "clip_grad_norm": 5.0,

  "bert_name": "bert-base-chinese",
  "bert_learning_rate": 5e-6,
  "warm_factor": 0.1,

  "use_bert_last_4_layers": true,
  "seed": 123,

  "rounds": 3,
  "alpha": 0.5,
  "cr": 80
}

报错如下: 微信截图_20221111143719

solkx commented 1 year ago

出错的原因是参数cr错误,应该是96,另外我的模型是基于W2NER在不连续NER上的改进,不适用于其他NER子任务

nlper01 commented 1 year ago

出错的原因是参数cr错误,应该是96,另外我的模型是基于W2NER在不连续NER上的改进,不适用于其他NER子任务

应该也适用于flat,overlap这些类型的NER吧,如论文中的实验分析,CADEC等数据集只有部分实体是不连续实体,还有其他类型的实体。 屏幕截图 2022-11-11 161551

solkx commented 1 year ago

准确说是适用于只有一种实体类型的数据集,论文评估的三个公开不连续数据集的实体类型都是只有一种,因此在预测的时候并没有考虑实体的类型,按照W2NER中将头尾关系和实体类型绑定的话,这样在扩展标签的后标签数量就会成倍增加,过多的标签很可能会导致预测更加困难,所以对于多种实体类型的数据集W2NER模型更加合适.

nlper01 commented 1 year ago

准确说是适用于只有一种实体类型的数据集,论文评估的三个公开不连续数据集的实体类型都是只有一种,因此在预测的时候并没有考虑实体的类型,按照W2NER中将头尾关系和实体类型绑定的话,这样在扩展标签的后标签数量就会成倍增加,过多的标签很可能会导致预测更加困难,所以对于多种实体类型的数据集W2NER模型更加合适.

好的,谢谢佬

nlper01 commented 1 year ago

准确说是适用于只有一种实体类型的数据集,论文评估的三个公开不连续数据集的实体类型都是只有一种,因此在预测的时候并没有考虑实体的类型,按照W2NER中将头尾关系和实体类型绑定的话,这样在扩展标签的后标签数量就会成倍增加,过多的标签很可能会导致预测更加困难,所以对于多种实体类型的数据集W2NER模型更加合适.

也就是说W2NER模型我想用苏剑林这个损失函数(TOE中的损失函数)是没法用了对吗?因为头尾关系要跟实体类型绑定,那么金标签就办法非0即1。

solkx commented 1 year ago

W2NER中依然可以使用TOE中的损失函数,TOE中的预测结果是多层的,每一层代表每一种标签,0代表不存在,1代表存在,之所以使用多层,是为了将重叠的标签区分开,具体可以参考TOE论文中的图2.

nlper01 commented 1 year ago

W2NER中依然可以使用TOE中的损失函数,TOE中的预测结果是多层的,每一层代表每一种标签,0代表不存在,1代表存在,之所以使用多层,是为了将重叠的标签区分开,具体可以参考TOE论文中的图2.

大佬,我想在W2NER中使用这个损失函数,没能实现,能否指点一下,我的q2925006374,感激不尽。

solkx commented 1 year ago

你用W2NER的话没必要使用TOE的损失函数,因为TOE中的损失函数是为了解决标签重叠问题(例如TOE论文中的图2),然而在W2NER中不存在标签重叠的问题.

nlper01 commented 1 year ago

大佬,我在CMeEE数据集上实验,遇到下面的报错,我已经把长度大于500的句子进行截断。我又看了实体类型,所有的类型在train/test/dev中均存在,这是为什么呢,解决不了了。 image

solkx commented 1 year ago

长度要小于200试一试,500还是太长.

nlper01 commented 1 year ago

长度要小于200试一试,500还是太长.

长度等于100还是一样的错,奇了怪了

solkx commented 1 year ago

这只看几行报错确实想不出来是什么问题,你只能从头一步一步的检错了.