vocab-coverage 项目介绍
项目简介
vocab-coverage
是一个专注于分析语言模型中文认知能力的项目。该项目通过多种方法和角度,评价各种语言模型在中文语言处理方面的能力,包括汉字识别率分析、词向量分布分析等。项目还提供了一系列命令行工具,方便开发者进行模型词汇覆盖率的自动化分析。
汉字识别率分析
字符集
项目基于三个字符集来分析模型的汉字识别率:
- 《通用规范汉字表》:由中国教育部颁布,包含 8105 个常用汉字。
- 《常用國字標準字體表》:由台湾研制,包含 4808 个常用汉字。
- 《Unicode中日韩统一表意文字》:涵盖汉字在 Unicode 中的基本区段,总共收录 20992 个汉字。
这三个字符集的组合为本项目提供了一个总计 21267 个汉字的分析基础,通过分析这三个字符集中汉字的识别率,我们可以了解不同语言模型对中文字符的理解。
识字判定
为了判断一个模型是否能够识别特定汉字,项目分析了模型的分词器(Tokenizer)如何处理这些汉字。通常有两种方式:
- WordPiece编码:如果一个汉字不在词表中,通常被标记为未知词,这代表模型无法识别该汉字。
- Byte-level BPE编码:可能将汉字拆分为多个 token,这样的模型理论上可以识别所有汉字,但实际上可能会影响语义理解的精度。
在词表中存在的汉字被直接编码为单一 token 的视为识别,无法以这种方式处理的即为未识别。
词向量分布分析
词向量分析帮助了解模型对词义的理解深浅。通过高维空间的向量分布图,我们可以可视化模型在理解汉字和词义时的表现。
字词的分类与后缀子词
项目将模型词表中的词按照语言、用途进行分类,包括「中文」、「日文」、「韩文」、「数字」和「其他」。此外还有「普通词」和「后缀子词」的区分。这种分类帮助我们更深入地分析模型在不同语言环境下的表现。
输入与输出端词向量
模型的输入端词向量代表初始语义,而输出端词向量则展示经过模型计算后的最终语义。通过观察这两者的区别,可以了解模型对汉字语义的进一步理解。
分析观察
项目分析了许多语言模型,如 BERT 类模型、ERNIE 模型以及 OpenAI 提供的模型等。在这些模型中,通过对比其词向量分布和汉字覆盖率,能看出不同模型在处理中文时的差异与特点。例如,某些模型在训练初期词表中就包含了大量汉字,具备更好的中文识别能力,而其它模型即便经过微调,中文理解依旧具有不足。
命令行工具 vocab-coverage
使用指南
安装与使用
项目提供了方便使用的命令行工具 vocab-coverage
,它含有三个子命令:
charset
:分析模型的字符集覆盖率。coverage
:评估词汇覆盖情况。embedding
:分析输入和输出端的词向量分布。
这些工具均能帮助开发者深入分析模型的词汇处理能力。
vocab-coverage
项目通过上述多种分析手段,帮助研究人员和开发者更好地理解和优化中文语言模型,为进一步提升模型的中文认知能力提供了有力支持。