ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从论文到代码:解读EMNLP 2020 ZEN模型的3大核心创新

从论文到代码:解读EMNLP 2020 ZEN模型的3大核心创新 从论文到代码解读EMNLP 2020 ZEN模型的3大核心创新【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN中文预训练模型经历了从 BERT 到 RoBERTa、ERNIE 的快速演进而 EMNLP 2020 上发表的ZEN 模型BERT-based Chinese Text Encoder Enhanced by N-gram Representations凭借“字符级 N-gram 级”联合建模的思路成为中文 NLP 预训练中一个极具启发性的代表作。ZEN 的中文文本编码能力在多项中文任务上超越了同等规模的 BERT本文带你从论文到开源代码一次读懂 ZEN 模型的 3 大核心创新并给出最快的上手路径。创新一用 N-gram 词表打破“单字编码”的局限BERT 的中文版本通常以单个汉字为基本单位但中文的语义往往由词或短语承载。ZEN 模型的第一个核心创新就是在字符序列之外显式引入 N-gram 表示词、短语的组合让模型在预训练和微调阶段都能“看见”潜在的词边界信息。在代码中这一设计由 ZEN/ngram_utils.py 中的ZenNgramDict类实现。它读取一个带频次的 N-gram 词表ngram.txt为每个 N-gram 分配唯一 ID并维护id_to_ngram_list与ngram_to_id_dict两个映射。配合输入的Ngram Matching Matrix模型能够快速判断当前句子中包含了哪些词典短语为后续的特征融合提供“索引”信号。创新二字符与 N-gram 双流编码器的深度融合如果说引入词表是“材料”那么 ZEN 模型对双流编码器的设计就是真正的“工艺”。ZEN 在同一个 Transformer 框架中并行维护两套编码流字符流使用标准 BERT 的字符嵌入与位置编码见 ZEN/modeling.py 中的BertEmbeddingsN-gram 流使用独立的 N-gram 嵌入层BertWordEmbeddings和若干层 N-gram 编码器。关键融合点在ZenEncoder的forward中每一层字符编码后模型通过torch.bmm(ngram_position_matrix, ngram_hidden_states)将 N-gram 特征按匹配矩阵加权加回字符表示实现逐层的特征互补。这一“中间层注入”方式让 N-gram 信息不只是输入侧的增强而是贯穿整个深层语义建模过程。同时模型对下游任务保持了极高的兼容性ZenForMaskedLM、ZenForNextSentencePrediction、ZenForSequenceClassification、ZenForTokenClassification等任务头一应俱全覆盖了绝大多数中文 NLP 场景。创新三预训练与微调一体化的中文任务适配ZEN 模型的第三个创新在于工程上的“拿来即用”。论文不仅报告了在文档分类DC、情感分析SA、句子对匹配SPM、自然语言推断NLI以及分词、词性标注、命名实体识别等任务上的显著提升还开源了完整的训练脚本examples/run_pre_train.py从零预训练 ZEN或基于 BERT 权重继续训练支持fp16加速examples/run_sequence_level_classification.py一键微调序列级分类任务如情感分析、文本分类examples/run_token_level_classification.py一键微调 token 级任务如 NER、分词、词性标注。微调只需指定--task_name、数据路径和预训练模型路径例如用--task_name ChnSentiCorp做中文情感分析、--task_name lcqmc做句子相似度即可在几分钟内复现论文中的效果。数据准备环节则由 examples/create_pre_train_data.py 完成帮助你把原始语料加工成带 N-gram 标注的预训练数据。快速上手从零复现 ZEN 模型效果想亲自体验 ZEN 模型的中文文本编码能力只需四步克隆代码仓库仓库地址https://gitcode.com/gh_mirrors/zen10/ZEN安装依赖参考requirements.txt使用create_pre_train_data.py生成预训练数据运行run_pre_train.py完成预训练也可直接加载官方预训练权重做微调用run_sequence_level_classification.py或run_token_level_classification.py在下游任务上微调并评估。小结ZEN 模型用“N-gram 词表 双流编码器 一体化训练框架”这套组合拳证明了中文预训练并不一定要依赖额外的分词器而是可以把词或短语信息作为显式的学习信号注入字符编码器。对想深入中文预训练、或者追求更强中文文本编码效果的开发者来说ZEN 的论文与代码都是一份值得反复研读的优质范本。无论是复现实验还是在此基础上改进从 ZEN/modeling.py 与 ZEN/ngram_utils.py 这两个文件入手你会很快抓住它的精髓。【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表