hankcs / HanLP

中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理
https://hanlp.hankcs.com/
Apache License 2.0
33.6k stars 10.03k forks source link

如何加载multi task learning预训练的某个模型 #1770

Closed geasyheart closed 2 years ago

geasyheart commented 2 years ago

Describe the feature and the current behavior/state.

Will this change the current api? How?

Who will benefit with this feature?

Are you willing to contribute it (Yes/No):

System information

Any other info

您好,非常不好意思打扰,在readme里面有这么一句话:

根据我们的[最新研究](https://aclanthology.org/2021.emnlp-main.451),单任务学习的性能往往优于多任务学习。在乎精度甚于速度的话,建议使用[单任务模型](https://hanlp.hankcs.com/docs/api/hanlp/pretrained/index.html)。

所以我将SRL模型从multi task learning预训练模型抽出来,但是预测的结果并不一样,所以麻烦作者大大帮忙看下具体问题在哪,应该怎么修改。更具体代码请看:bbs hankcs 如何将multi task训练的某个模型抽取出来

非常感谢!!

hankcs commented 2 years ago

请仔细阅读文档。

  1. 在内存有限的场景下,用户还可以删除不需要的任务达到模型瘦身的效果。但瘦身后准确率不变。
  2. 单任务 https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/srl_stl.ipynb
geasyheart commented 2 years ago

您好,您这些例子我也看到了,也知道您multi task learning是在自己私有数据集上训练得到的,比如CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH。那我想做的事情是:

在您私有数据集训练出来的结果上,删除不必要的任务,只保留SRL,然后再在这个基础上进行微调。

但是我发现在保留SRL后进行和原模型进行验证时, 推理结果和HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH,)结果不一致。

更具体代码在hankcs bbs

非常感谢!!