Skip to main content

A Python package designed to perform coverage analysis on Chinese vocabulary for language models.

Project description

语言模型中文识字率分析

项目介绍

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

为了分析模型的中文识字率,我们使用三个常用的字符集,总共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。

分析结果

原生的BERT类的模型

Sentence BERT 提供的模型

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

ERNIE

基于原生 LLaMA 的模型

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

中文大语言模型

其它大语言模型

OpenAI 模型

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vocab-coverage-0.4.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vocab_coverage-0.4-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file vocab-coverage-0.4.tar.gz.

File metadata

  • Download URL: vocab-coverage-0.4.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for vocab-coverage-0.4.tar.gz
Algorithm Hash digest
SHA256 77b8fb47292d772e3519b376e536ba18979a1af7634d8a15ab8e58cd92fd81b9
MD5 357a4cfe86fe15d25c5f4514861e3f4d
BLAKE2b-256 9bdf1ebd1f2298feb52358ddf48054f321f4195a9aa5c77bef38c31734f6116e

See more details on using hashes here.

File details

Details for the file vocab_coverage-0.4-py3-none-any.whl.

File metadata

  • Download URL: vocab_coverage-0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for vocab_coverage-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4e4432281f2c493453aaac433f80a9b50ef42e580c5ffb57c0c62c2f0d5aafee
MD5 efc495fc441666f2fd68cde313504f0c
BLAKE2b-256 846262eec4402038be6deabf454f17a55892cc3b466a93fe4aee878944ac4823

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page