Git Product home page Git Product logo

vocab-coverage's Introduction

语言模型中文识字率分析

项目介绍

本项目的目的是为了调查各个语言模型的中文识字率的情况,以此可以作为后续模型评估分析的参考。

为了分析模型的中文识字率,我们使用三个常用的字符集,总共21267个汉字。

  • 中华人民共和国教育部于2013年颁布的《通用规范汉字表》,在该字表中,共收录了 8105 个汉字,其中一级字表(常用字集)3500个,二级字表3000个,三级字表1605个。字表内容从中文百科中获取。
  • 中華民國教育部頒布的《常用國字標準字體表》 中的甲表和乙表。甲表收录常用字4808个,其中有1749个汉字不在《通用规范汉字表》中;乙表收录次常用字6343个,其中有4503个汉字不在《通用规范汉字表》中。统计汉字识字率时,将只针对增加的汉字进行统计,已经在《通用规范汉字表》中的汉字不再重复统计。
  • 《Unicode中日韩统一表意文字》,为汉字在 Unicode 中的基本区段。在 Unicode 14.0 时,收录了 20992 个汉字,占据码位 U+4E00-U+9FFF。其中有6910个汉字,既不在《通用规范汉字表》中,也不在《常用國字標準字體表》中。统计汉字识字率时,将只针对增加的汉字进行统计,已经在《通用规范汉字表》和《常用國字標準字體表》中的汉字不在重复统计。汉字在 Unicode 中还有其它区段,总共将近9万汉字,但由于其它汉字不常使用,这里暂不纳入统计范围。

对于语言模型是否认知某个汉字的判断,我们通过对应语言模型所使用的 Tokenizer 是否可以对该汉字进行 encode 来判断。

  • 模型不认识某汉字的判定为:
    • 模型对该汉字的编码结果为空;
    • 模型对该汉字的编码结果为 unk_token_id
  • 模型认识某汉字的判定为:
    • 模型对该汉字的编码结果长度为1;
  • 如果编码结果长度大于1,这有可能是因为使用了 BBPE 的原因,一个不常出现的汉字被拆分成了多个 token。由于汉字被以UTF-8的形式编码,拆散该编码并不能体现汉字语义,因此,一个汉字被打散的编码越多,我们认为该模型对该汉字的认知程度可能越低。所以,对于编码结果长度大于1的情况,我们认为该模型对该汉字的认知程度为 1 / len(encode_result),用以控制半透明程度。在识字率的计数中,将计数为 0

在进行判断前,会先行去除前缀后缀的特殊token。

命令行工具 vocab-coverage 使用指南

vocab-coverage 是一个命令行工具,用于分析模型的汉字识字率。

安装

pip install vocab-coverage

使用

vocab-coverage 它有两个子命令:charsetmodel

charset 子命令

charset 子命令用于生成用以统计识字率的字表文件。

$ vocab-coverage charset --help
usage: vocab-coverage charset [-h] [--charset_file CHARSET_FILE]

options:
  -h, --help            show this help message and exit
  --charset_file CHARSET_FILE
                        用以统计识字率的字表文件(默认:charset.json)

model 子命令

model 子命令用于分析模型的汉字识字率。

$ vocab-coverage model --help
usage: vocab-coverage model [-h] [--model_name MODEL_NAME] [--charset_file CHARSET_FILE] [--output_dir OUTPUT_DIR] [--debug]

options:
  -h, --help            show this help message and exit
  --model_name MODEL_NAME
                        模型在 HuggingFace Hub 上的名称(默认为 shibing624/text2vec-base-chinese)
  --charset_file CHARSET_FILE
                        用以统计识字率的字表文件(默认为 charset.json)
  --output_dir OUTPUT_DIR
                        生成的图像文件的输出目录(默认为 images)
  --debug               是否打印调试信息
  • --model_name:模型在 HuggingFace Hub 上的名称。默认为 shibing624/text2vec-base-chinese
  • --charset_file:用以统计识字率的字表文件。默认为 charset.json
  • --output_dir:生成的图像文件的输出目录。默认为 images
  • --debug:是否打印调试信息。

示例

$ vocab-coverage model --model_name=THUDM/chatglm-6b
检查模型 THUDM/chatglm-6b 的字表
字表《通用规范汉字表》一级汉字:3499/3500 (99.97%)
字表《通用规范汉字表》二级汉字:1724/3000 (57.47%)
字表《通用规范汉字表》三级汉字:48/1605 (2.99%)
字表《常用國字標準字體表》甲表(增):185/1749 (10.58%)
字表《常用國字標準字體表》乙表(增):14/4503 (0.31%)
字表《Unicode中日韩统一表意文字》(增):115/6910 (1.66%)

除了上述输出外,还会在 images 目录下生成一个图像文件,images/THUDM_chatglm-6b.png,为可视化的分析结果。

分析结果

参见:https://github.com/twang2218/vocab-coverage/blob/main/README.md#%E5%88%86%E6%9E%90%E7%BB%93%E6%9E%9C

原生的BERT类的模型

Sentence BERT 提供的模型

基于 bert-base-chinese 字表的模型

ERNIE

基于原生 LLaMA 的模型

基于汉字扩表后的 LLaMA 的模型

中文大语言模型

其它大语言模型

OpenAI 模型

vocab-coverage's People

Contributors

twang2218 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.