yhcc / BARTNER

215 stars 22 forks source link

替换为中文的fnlp/bart-large-chinese 模型后,如何改动代码,能让bart训练中文?请问有 训练成功过吗 #10

Open aixiaoxin123 opened 2 years ago

aixiaoxin123 commented 2 years ago

请问替换为中文的fnlp/bart-large-chinese 模型后,如何改动代码,能让bart训练中文?请问有 训练成功过吗?

yhcc commented 2 years ago
  1. fnlp/bart-large-chinese用的是BertTokenizer,所以下面这里应该是需要删掉add_prefix_space=True这个 https://github.com/yhcc/BARTNER/blob/b1741fec4d1696b5712f5d60b3ee1318bd8d05c9/data/pipe.py#L113
  2. 好像是就没有需要改动了,之前我有尝试过使用中文bart跑flat ner,但是效果比bert会差一些,主要原因是由于好像生成式的方式在中文里面会比较难找对boundary,但是我也没咋调参,不确定如果修改一些参数会不会让效果好一些。
leehommlee commented 2 years ago

请问有替换为中文的fnlp/bart-large-chinese 模型 成功吗,成功的话 是否可以发一份代码给我,635307345@qq.com 我这边替换后但一直报错

lzf00 commented 2 years ago

有替换为中文的fnlp/bart-large-chinese模型成功了吗,成功的话是否可以发一个代码给我,635307345@qq.com 我当时替换后但一直报错

同求,想用自己的中文数据集做实验,用bart-base可以成功,但是换成fnlp/bart-base-chinese会出错

jingsongs commented 2 years ago

应该有不少需要改的吧,BertTokenizer和 代码中用的bartTokenizer使用的句子开始和结束标记都不一样,编码解码过程中多处代码都需要修改

Rxma1805 commented 2 years ago

改动不小,未成功

Tough-Stone commented 1 year ago

请问有替换为中文的fnlp/bart-large-chinese 模型 成功吗,成功的话 是否可以发一份代码给我,635307345@qq.com 我这边替换后但一直报错

同求

Novampe commented 2 months ago

我用的是bart-base-chinese。按照bart-base-chinese的官方huggingface页面的介绍,需使用BertTokenizer。然而此时使用AutoModel出错,提示BartModel.forward() got an unexpected keyword argument 'token_type_ids'。最后发现可以在训练和测试loop编写的时候把tokenize之后的张量进行一步简单的字典pop操作,即可正常运行。以训练loop的代码为例:

model.train()
    for step, (X, y) in enumerate(dataloader, start=1):
        X, y = X.to(device), y.to(device)
        X.pop('token_type_ids') # 对于bart-chinese必须加这一行
        pred = model(X)

这样就ok了