汉字拆解工具实战:3分钟上手Python汉字拆分库hanzi_chaizi

汉字拆解工具实战:3分钟上手Python汉字拆分库hanzi_chaizi 汉字拆解工具实战3分钟上手Python汉字拆分库hanzi_chaizi【免费下载链接】hanzi_chaizi汉字拆字库可以将汉字拆解成偏旁部首在机器学习中作为汉字的字形特征 | Hanzi Decomposition Library allows Chinese characters to be broken down into radicals and components, which can be used as character shape features in machine learning.项目地址: https://gitcode.com/gh_mirrors/ha/hanzi_chaizi备选标题 ① 汉字结构分析入门一行代码看清赢字的五个部件 ② 一个能拆字的Python库hanzi_chaizi从安装到应用全记录 ③ 拆字教学与字形特征提取hanzi_chaizi一库两用的正确姿势你有没有盯着一个汉字发呆过赢字笔画这么多凭什么一眼就能看出它是亡、口、月、贝、凡叠出来的如果告诉你这种拆解只需一行 Python 代码就能完成你会不会也想马上试一下这就是本文的主角——hanzi_chaizi一个把汉字拆解变成一次字典查询的开源汉字拆解工具内置两万余汉字的拆字数据拆解结果还能直接作为机器学习里的字形特征使用。下面我们从它能拆出什么讲起再一步步揭开数据从哪来、怎么用、能用在哪儿。先看效果三行代码把赢字大卸八块安装只需要一条命令pip install hanzi_chaizi随后在解释器里敲下这段代码from hanzi_chaizi import HanziChaizi hc HanziChaizi() for char in [赢, 解, 森]: print(f{char} → {、.join(hc.query(char))})运行结果赢 → 亡、口、月、贝、凡 解 → 角、刀、牛 森 → 木、木、木从赢这样的复杂合体字到森这种三叠结构拆解都是毫秒级响应。再把明拆成日、月把好拆成女、子你会发现拆出来的部件全是标准偏旁部首——这正是它在 NLP 和深度学习里能当字形特征用的前提字形相近的字拆解结果也相近模型拿到的不再是一张像素图而是一串有语义的部件序列。想知道为什么拆得这么准答案藏在一份被精心处理过的数据文件里下一节揭晓。拆解结果从哪来一条数据流水线的三层结构hanzi_chaizi 的代码本体精简得惊人——核心类HanziChaizi只有十几个方法真正的大头是数据。整个项目的数据链路可以拆成三层第一层原始素材。项目raw_data/目录下躺着两个文本文件chaizi-ft.txt繁体拆字数据和chaizi-jt.txt简体拆字数据它们源自公开的《漢語拆字字典》采用 CC BY 3.0 协议覆盖超过 20,000 个汉字。第二层解析脚本。raw_data/parse.py只有几十行逻辑直白逐行读取两个 txt 文件按制表符切分把汉字 → 若干种拆法整理成字典再序列化输出。运行方式在开发文档里写得很清楚uv run python raw_data/parse.py第三层成品数据。脚本生成的hanzi_chaizi/data/data.pkl用 pickle 格式存储最终字典库在初始化时通过importlib.resources加载它因此HanziChaizi()只需要一次构造之后所有查询都在内存里完成这也是快的根源。数据结构长这样每个字可能对应多种拆法query()默认返回第一种{ 明: [[日, 月]], 好: [[女, 子]], 名: [[夕, 口]] }这条流水线的存在意味着你完全可以替换、扩充这份数据。想让某个行业术语有专门的拆法改 txt、跑脚本、重新生成 pkl 即可。两个容易被忽略的细节部分汉字如农、表、衣、囊的拆解结果里会出现\uf7ee这个 Unicode 私有区字符它代表衣的下半部分撇捺结构因为标准 Unicode 中没有独立编码只能用私有区字符占位。有些字确实没法再拆如一、民、木、长项目单独维护了一份non_decomposable.txt列出这些最小部件做批量处理时可以拿它当过滤名单。数据原理摸清了接下来是重头戏——这些拆解结果到底能派什么用场三大落地场景教学、建模、设计场景一拆字教学把死记硬背变成结构理解教谢字不用再让学生描红十遍——直接展示言 射配合湖 水 胡河 水 可这类同旁字对比学生能自发归纳出部首规律。下面这段代码随手就能做成课堂小工具class HanziTeacher: def __init__(self): self.hc HanziChaizi() def explain(self, char): parts self.hc.query(char, defaultNone) if parts: return f「{char}」由 { .join(parts)} 组成 return f「{char}」是基础部件无法继续拆分 teacher HanziTeacher() for word in 赢谢懂: print(teacher.explain(word))场景二NLP 字形特征提取给模型看得懂的输入中文 NLP 里汉字怎么进模型一直有讲究。one-hot 丢语义图片输入太笨重而拆字结果天然是部件序列可以直接做序列编码。一个完整的特征提取小案例class GlyphFeaturizer: def __init__(self): self.hc HanziChaizi() # 顺便统计全库一共出现多少种部件 self.radicals { part for parts in self.hc.data.values() for part in parts[0] } def decompose(self, text): return [self.hc.query(c, default[c]) for c in text] feat GlyphFeaturizer() print(feat.decompose(智能)) print(f全库共出现 {len(feat.radicals)} 种不同部件)有了这个类你可以把整段文本批量转成部件序列喂给 RNN、Transformer 或图神经网络做下游任务统计出的部件集合还能用来构建词表。对字形相近即表示相近这一先验有需求的场景这套方案几乎是零成本接入。场景三设计灵感与文字研究字体设计师可以从拆解结果里提取构件库把木、心、水这类高频部件重组出全新的艺术字研究者则可以拿两万字的拆解数据做统计分析观察部件在不同时期字形中的增减规律。一句话凡是需要看懂汉字内部结构的地方它都能当底座。工具好不好用比一比才知道。下一节我们用一张表说清楚差距。横向对比为什么说它比翻字典、开网页顺手对比维度hanzi_chaizi传统纸质字典在线拆字网站数据覆盖20,000 汉字视版本而定常用字为主大多只覆盖常用字查询速度本地内存查询毫秒级需人工翻阅分钟级受网络与服务器影响能否离线使用可以可以不行可编程调用三行代码接入不支持多数无开放 API可定制性开源数据可自行替换无有限是否免费开源免费需购买免费但受限为什么选它五个理由零第三方依赖纯标准库实现pip install完即用不污染环境。一次加载、反复查询数据在构造时一次性读入内存适合批处理海量文本。API 极简整个库对外只有一个类、一个query()方法学习成本五分钟封顶。数据来源权威基于《漢語拆字字典》整理并附 CC BY 3.0 授权说明学术使用有据可依。完全开源可扩展从原始 txt 到最终 pkl 的生成脚本公开数据与代码都可改还自带测试和开发文档。批量处理与异常兜底别让一个生僻字毁掉整个任务实际项目中你处理的往往是整段文本里面难免混进标点、字母、生僻字。query()的设计早就考虑到了这点——查不到时返回default默认是None。推荐的做法是显式传入降级值text 汉字拆解AI2024 for char in text: parts hc.query(char, default[char]) # 拆不了就原样返回 print(f{char} → {parts})再稳一点可以包一层安全函数def safe_query(hc, char): try: result hc.query(char, default[char]) return result except Exception as exc: # 兜底任何异常 print(f查询「{char}」出错{exc}) return [char]配合前面提到的non_decomposable.txt你甚至可以在预处理阶段就把无法拆解的字单独挑出来走另一条逻辑——比如直接查拼音或标记为UNK。进阶玩法自己动手重新生成一份拆字数据项目把开发流程全部收进了 Makefile想扩展数据、修 bug 或者只是好奇克隆下来就能玩git clone https://gitcode.com/gh_mirrors/ha/hanzi_chaizi cd hanzi_chaizi make dev # 安装开发依赖 make test # 跑测试 make format # 统一代码风格 make dist # 构建发布包开发指南写在仓库根目录的develop.md里测试用例集中在tests/test_hanzi_chaizi.py——你能看到明→日月名→夕口等断言这些用例本身就是最好的 API 使用说明书。想改拆字规则改完raw_data/下的 txt重跑raw_data/parse.py再跑一遍make test确认没破坏原有结果齐活。现在轮到你了三步就能开始这段探索① 安装pip install hanzi_chaizi→② 试玩hc.query(赢)→③ 深挖用它实现你的第一个拆字教学页或字形特征模块。汉字的结构之美不该只停留在看起来复杂的层面。有了这套拆字库你可以把这种美拆开、看清楚再亲手把它变成教学工具、模型特征或设计素材。欢迎在评论区分享你的用法——你打算先拿哪个字开刀【免费下载链接】hanzi_chaizi汉字拆字库可以将汉字拆解成偏旁部首在机器学习中作为汉字的字形特征 | Hanzi Decomposition Library allows Chinese characters to be broken down into radicals and components, which can be used as character shape features in machine learning.项目地址: https://gitcode.com/gh_mirrors/ha/hanzi_chaizi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考