ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

为什么选择ZEN?N-gram表示如何破解中文分词难题

为什么选择ZEN?N-gram表示如何破解中文分词难题 为什么选择ZENN-gram表示如何破解中文分词难题【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN在中文自然语言处理NLP领域如何让预训练语言模型真正看懂中文一直是困扰开发者的核心难题。今天介绍的 ZEN 是一个基于 BERT 的中文文本编码器Z增强EnhancedN-gram 表示N-gram representations的开源项目它通过将字符级编码与词语级 N-gram 信息深度融合显著缓解了中文分词带来的歧义问题。本文将带你理解 ZEN 的架构原理、实战效果以及它为何值得成为你中文 NLP 任务的首选方案。中文分词难题为什么 BERT 也会看不懂中文一字多义与一词多义的困扰中文与英文最大的不同在于英文单词之间有天然空格分隔而中文句子是一串连续的汉字流。BERT 以字符为单位处理中文比如会字既可以是动词开会也可以是名词机会单独一个字符很难携带完整的语义。分词边界模糊带来的歧义武汉市长江大桥到底是武汉/市长/江大桥还是武汉市/长江大桥这种分词歧义在传统方法中需要依赖外部分词工具而分词错误会像滚雪球一样传导到下游任务最终拉低整体效果。ZEN 是什么BERT 中文文本编码器的一次进化ZEN 由创新工场人工智能研究院于 2020 年发布论文发表于 EMNLP-2020项目定位非常清晰在预训练阶段就显式地将潜在词或短语边界信息融入 BERT 字符编码器让模型在训练时同时掌握字符序列和其中蕴含的词语、短语信息而不是把分词问题留给下游任务事后补救。如上图所示ZEN 的核心结构由两大模块构成模块 A字符编码器沿用 BERT 的多层 Transformer 结构负责捕捉字符级上下文语义模块 BN-gram 编码器基于词典与 N-gram 匹配矩阵为每个 N-gram2-gram、3-gram 等词组生成独立表示。两个模块通过残差连接逐层交互实现字符级与 N-gram 级特征的双向融合这是 ZEN 破解中文分词难题的关键设计。完整模型定义可在 ZEN/modeling.py 中查看其中ZenModel、ZenForSequenceClassification、ZenForTokenClassification等类分别对应不同的任务出口。N-gram 表示如何破解中文分词难题从字符到词组的双层语义融合传统的字符编码器只能看到武汉市三个孤立的字符而 ZEN 的 N-gram 编码器能直接看到武汉武汉市长江大桥这样的词组。当字符编码器在第 k 层输出特征时会与 N-gram 编码器同层的输出相加相当于让每个字符听见它所属词组的语义歧义自然大幅减少。词典与 N-gram 匹配矩阵的作用ZEN 预训练时使用了一个带词频的词典文件ngram.txt对应 ZEN/ngram_utils.py 中的ZenNgramDict类。模型通过 N-gram 匹配矩阵记录当前句子包含哪些词典词条再将这些二进制匹配信号映射为低维嵌入供 N-gram 编码器使用。这意味着词典越大、覆盖越广模型对专业术语和罕见词的编码能力就越强。残差连接如何实现特征互补N-gram 特征通过残差连接注入字符编码器的每一层同时字符编码器的输出也会反馈给 N-gram 编码器。这种双向交互避免了单一粒度的局限——字符信息帮助模型处理未登录词N-gram 信息帮助模型消除分词歧义两者取长补短。ZEN 的实际表现七大中文 NLP 任务验证ZEN 在预训练阶段同时优化**掩码语言模型MLM与下一句预测NSP**两个目标与 BERT 完全兼容的预训练方式让它可以轻松微调到各类任务。在官方论文与实验数据集说明见 datasets/README.md中ZEN 在七大类中文任务上均取得了优于同等规模 BERT 的成绩️中文分词CWSMSR 数据集直接受益于 N-gram 信息词性标注POSCTB5 数据集命名实体识别NERMSRA 数据集专业实体识别能力显著提升文本分类DCTHUCNews 数据集情感分析SAChnSentiCorp 数据集句对匹配SPMLCQMC 数据集自然语言推理NLIXNLI 中文部分。如何快速上手 ZENZEN 的代码结构非常清爽安装依赖pip install -r requirements.txt后即可使用。先克隆仓库git clone https://gitcode.com/gh_mirrors/zen10/ZEN然后按需运行示例脚本从零预训练 ZEN 模型使用 examples/run_pre_train.py配合--scratch参数即可从零开始预训练也支持在 BERT 权重基础上继续训练大大降低训练成本。序列级分类任务微调情感分析、文本分类、句对匹配等任务使用 examples/run_sequence_level_classification.py通过--task_name指定 DC、SA、SPM、NLI 即可一键切换。词级分类任务微调分词、词性标注、命名实体识别使用 examples/run_token_level_classification.py支持 CWS、POS、NER 三类任务开箱即用。总结ZEN 适合谁用如果你正在做中文搜索、智能客服、信息抽取、舆情分析等对语义理解要求高的任务且苦于传统字符级模型的分词歧义问题ZEN 提供了一个零成本的升级方案——它完全兼容 BERT 的微调流程只需把--bert_model指向 ZEN 模型即可。N-gram 表示带来的不仅是精度提升更是一种让模型从预训练阶段就理解中文词组边界的新思路这正是它在众多中文预训练模型中独树一帜的原因。【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表