spaCy

spaCy官方提供了两个中文语言模型:zh_core_web_sm(小型)和zh_core_web_trf(基于Transformer)。

1. zh_core_web_sm (小型模型)

模型架构

  • 基础架构:基于CNN的神经网络管道

  • 组件构成:

    • 分词器:基于规则的中文分词器

    • 词性标注(Tagger):

      • 架构:多层感知机(MLP)

      • 输入:分词后的token及其上下文特征

      • 输出:中文词性标签(如名词、动词等)

    • 依存句法分析(Parser):

      • 架构:基于转移的解析器(Transition-based parser) + CNN特征提取

      • 使用MaltParser风格的算法

    • 命名实体识别(NER):

      • 架构:基于BILUO标注方案的CNN+CRF模型

      • 实体类型:PERSON(人名)、ORG(组织)、GPE(地理政治实体)等

训练数据

  • 使用Universal Dependencies中文语料(UD_Chinese)和OntoNotes 5.0

  • 词汇表:约50万词

性能特点

  • 模型大小:~45MB

  • 速度快,适合实时处理

  • 准确率中等,适合通用场景

2. zh_core_web_trf (基于Transformer的模型)

模型架构

  • 基础架构:基于Transformer的管道

  • 核心组件:

    • Transformer主干:使用预训练的bert-base-chinese模型

    • 任务特定层:

      • 词性标注:在BERT输出上添加线性分类层

      • 依存句法分析:基于Biaffine注意力机制

      • 命名实体识别:在BERT输出上添加CRF层

详细组件

  1. Tokenizer:

    • 使用BERT的WordPiece分词器

    • 专为中文优化的子词切分

  2. Transformer层:

    • 12层BERT架构

    • 768隐藏单元

    • 12个注意力头

    • 最大序列长度:512 tokens

  3. 任务头(task heads):

    • Tagger:单层线性分类器

    • Parser:Biaffine注意力模型

训练数据

  • 使用OntoNotes 5.0、UD Chinese等语料

  • 在多种中文NLP任务数据上进行微调

性能特点

  • 模型大小:~420MB

  • 处理速度较慢(相比CNN版本)

  • 准确率高,适合需要高精度的场景

  • 支持长距离依赖关系捕捉

架构对比表

特性zh_core_web_smzh_core_web_trf
基础架构 CNN Transformer (BERT)
分词方式 基于规则 WordPiece
词性标注 MLP BERT+线性层
依存分析 转移式解析器+CNN Biaffine注意力
NER CNN+CRF BERT+CRF
上下文感知 有限窗口(通常±2个token) 全序列注意力
预训练目标 无预训练 掩码语言模型(MLM)
最大输入长度 10,000字符(但性能随长度下降) 512子词

模型选择建议

  1. 选择zh_core_web_sm当:

    • 需要快速处理大量文本

    • 硬件资源有限

    • 对准确率要求不高的一般应用

  2. 选择zh_core_web_trf当:

    • 需要最高准确率

    • 处理复杂句子结构

    • 有GPU加速可用

    • 需要捕捉长距离依赖关系

posted @ 2025-08-18 11:38  wangssd  阅读(60)  评论(0)    收藏  举报