展开详细数据来源及处理说明
数据来源 之 Unicode Character Database (UCD)
当前UCD版本:15.1
UCD提供txt(文件数量多)和xml(单个大文件)两种数据格式。
含有任意字符所属语言区块、每个区块的码的范围。含有正常汉字字符(CJK统一表意字符区)与康熙部首区、兼容表意字符区、汉字笔划偏旁字符区。还有繁简、Z变体、语义变体、特殊主义变体之间的关系、笔划偏旁字符对应的独立汉字。还有每个字的提交者是来自哪个国家或地区的研究组
下载了xml并进行缩小,删除不需要的信息。然后生成JSON格式的汉字关联表
UCD参数中的汉字变体、关联
采用的Unihan变体参数
- kSimplifiedVariant 这个字对应的简体字
- kTraditionalVariant 这个字对应的繁体字
- kCompatibilityVariant 这个兼容区字对应的统一区字
- kZVariant 相同字多次编码(因为错误,或来源不同)形成的“变体”
- EqUIdeo 这个笔划字符对应的统一字
"壮":{"rel":["壯","𡉟"],"isSimp":true,"isTrad":true},
"壯":{"rel":["壮","𡉟"],"isTrad":true},
"壮":{"rel":["壮","壯","𡉟"],"isComp":true}, // 兼容区字符
"𡉟":{"rel":["壮","壯"]}, //扩展区字,少见字
"並":{"rel":["併","倂","并"],"isTrad":true},
"併":{"rel":["並","倂","并"],"isTrad":true},
"倂":{"rel":["並","併","并"]},
"并":{"rel":["並","併","倂"],"isSimp":true,"isTrad":true},
"倂":{"rel":["並","併","倂","并"],"isComp":true}, // 兼容区字
"並":{"rel":["並","併","倂","并"],"isComp":true}, // 兼容区字
"⾨":{"rel":["門","门"],"isRad":true}, // 笔划偏旁字符
"門":{"rel":["门"],"isTrad":true},
"门":{"rel":["門"],"isSimp":true},
其他未采用的Unihan变体参数: kSemanticVariant, kSpecializedSemanticVariant, kSpoofingVariant
Unicode参数之字符类型
gc (General Catagory) 参数指示一个字符属于 “普通阅读型”字符 或是 控制字符、空白、组合字符 等
Unicode参数之版本
age参数指示一字符被收录进UCD的Unicode版本
1.0.0 1991年10月 1.0.1 1992年6月 1.1 1993年6月 2 1996年7月
2.1 1998年5月 3 1999年9月 3.1 2001年3月 3.2 2002年3月
4 2003年4月 4.1 2005年3月 5 2006年7月 5.1 2008年4月
5.2 2009年10月 6 2010年10月 6.1 2012年1月 6.2 2012年9月
6.3 2013年9月 7 2014年6月 8 2015年6月 9 2016年6月
10 2017年6月 11 2018年6月 12 2019年3月 12.1 2019年5月
13 2020年3月 14 2021年9月 15 2022年9月 15.1 2023年9月
数据来源 之 中华地区官方中文教育制定的常用字表(地区代号:CN+HK+TW)
参看汉字规范#現代規範 - wikipedia
-
地区代号CN
《通用规范汉字表》(2013)。分为三级:
- 一级字表 3500字
- 二级字表 3000字
- 三级字表 1605字
其中一、二级在此认为皆是简体字,三级不视为一定是简体。附件中的繁、异体对照表这里未采用
本工具数据内容取自UCD的kTGH参数。因官方链接提供的原文件是图片PDF
-
地区代号HK
《常用字字形表》 4759字(实际加上同义字后更多)
本工具数据内容取自UCD的kHKGlyph参数
-
地区代号TW
- 《常用國字標準字體表》(甲表)(1979) 4808字
- 《次常用國字標準字體表》(乙表)(1982首次) 6000多字
- (本工具未采用)《罕用國字標準字體表》(丙表)(1983) 18300+ 字; 《異體國字字表》(丁表)(1984) 18500+字; 《異體字字典》 约29000字
甲表中的字在此视为皆是繁体字,其他表不然
本工具的甲、乙表数据取自 CNS 11643
下例为总合了以上地区官方中文教育制定的常用字表后的部分数据
"說":{"rel":["説","说"],"isEdu_HK":true,"isEdu_TW_A":true},
"説":{"rel":["說","说"],"isEdu_HK":true},
"说":{"rel":["說","説"],"isEdu_CN_1c":true},
"裏":{"rel":["裡","里"],"isEdu_HK":true},
"裡":{"rel":["裏","里"],"isEdu_HK":true,"isEdu_TW_A":true},
"里":{"rel":["裏","裡"],"isEdu_CN_1c":true,"isEdu_HK":true,"isEdu_TW_A":true},
"床":{"rel":["牀"],"isEdu_CN_1c":true,"isEdu_TW_A":true},
"牀":{"rel":["床"],"isEdu_HK":true},
数据来源 之 CNS 11643 的字源数据
来自台湾的编码「中文標準交換碼」 (CNS 11643) 的官方网站上,可链接到对应的数据下载页面(目前约10万字)。数据中包含有以上甲~丙表、以及其他教育汉字字表的字符编码信息,以及它们由CNS 11643到Unicode的转换表
《國中小教科書常用字》 来自下载数据包内,有500多字(此名称在其他地方找不到说明)。它 + CNS11643数据包内的《次常用國字標準字體表》 ≈ 真正的《次常用國字標準字體表》
数据来源 之 CCCII (尚未)
来自台湾的编码「中文資訊交換碼」(CCCII,以前又叫EACC)将正、简、异、日几种字形的汉字字符分开区域编排,且收录异体数量多。并且,在这种编码下,只要在编码上平移特定的量,就能找到所关联的汉字,不一定要专门的关联表(也因此同一字有时需要多个编码,因为繁简关系不只有一个对应)
据说1987年版本收录5.3万字符。1989的稿收录7.5万字符(4.4万独立字和3.1万变体),这种编码采用的系统少,资料少
数据来源 之 OpenCC
OpenCC含有中文繁简关系、日本用字与中文汉字关系
下例相当于把openCC的STCharacters.txt和TSCharacters.txt合并了
"干": { "rel": [ "幹", "乾", "榦" ], "isSimp": true, "isTrad": true },
"幹": { "rel": [ "干", "乾", "榦" ], "isTrad": true },
"乾": { "rel": [ "干", "幹", "榦" ], "isTrad": true, "isSimp": true },
"榦": { "rel": [ "干", "幹", "乾" ], "isTrad": true },
干幹乾榦:干和乾既是简体也是繁体,幹和榦仅是繁体
又,例如,发發髮発髪:中文繁简字皆互相关联,日本变体可关联到中文繁简字,但从中文字不需要关联到日本字。(这里又相当于把openCC的HKVariants.txt、TWVariants.txt、JPVariants.txt也合并了进来,期间排除了不必要的变体关联)
"发": { "rel": [ "發", "髮" ], "isSimp": true },
"發": { "rel": [ "发", "髮" ], "isTrad": true },
"髮": { "rel": [ "发", "發" ], "isTrad": true },
"発": { "rel": [ "發", "发", "髮" ], "isVari_JP": true },
"髪": { "rel": [ "髮", "发", "發" ], "isVari_JP": true },
(openCC数据的预处理应在UCD、CNS之后)
总数据
结合上面提到的数据,生成总数据表使用
结合之前,”修正“一些来自UCD中的繁简“多余”标志(如果你认为这样修正有是错误的请开issue讨论):
- 已在[港表 ∪ 台表甲]中,且不在[陆表一 ∪ 陆表二]中的字,若有简体属性,取消此属性
- 已在[陆表一 ∪ 陆表二]中,且不在[港表 ∪ 台表甲 ∪ 台表乙]中的字,若有繁体属性,取消此属性
数据预处理的方法
文件名以pre开头的为预处理脚本(要先cd进入pre_xxxx所在目录再运行)。用于将原始数据生成.js包装的数据文件(文件内容类似xxxx.xxx = { ..很多行... }),以便于web使用。预处理应按以下顺序运行,且只要其中一个更新过,其排序之后的也必须更新:
- unicode (陆表、港表数据也是取自于此)(每年需要人工下载跟进更新)
- cns (台表数据取自于此)(每年需要人工下载跟进更新)
- edu
- opencc (需要edu数据)
- summary (总数据,最终应使用的)
把整合了汉字关联、汉字属性的数据文件以“xxxx-data-map”命名。具体一点,map仅繁简关联,map2是供正常使用的,map3是把“不必要的关联”也关联进来了的
若要运行预处理,需要类unix环境和bash。unicode和cns原始数据是需要手动下载放入的
评论