简介:字是文言文语义的最小承载单元,也是机器理解古籍的第一道门槛。本文面向开发者,讲解如何将汉字的本义、引申义链与通假关系抽象为可计算的结构化知识:给出字库Schema设计、义项消歧思路与服务化落地架构,并以“行”字为例演示从辞书知识到线上能力的完整路径,帮助读者构建可解释、可迭代的文言文智能处理方案。
《文心雕龙》有一句经典论述:“夫人之立言,因字而生句,积句而成章,积章而成篇。”这句话不仅描述了文章的生成规律,也恰好刻画了自然语言处理系统的信息流:任何面向文言文的机器理解能力,最终都要落到“字”这一最小语义单元上。字义不清楚,句子的切分、理解、翻译就都是空中楼阁。
与现代汉语相比,文言文在字级层面有三个显著特点,它们直接决定了技术路线的差异:
因此,做好文言文智能处理,第一步往往不是堆更大的模型,而是先把“字”的知识弄清楚、存起来、算得动。对应到工程上就是三件事:字义知识的结构化建模、字级语义消歧、可查检可服务的字库基础设施。下文依次展开。
权威古汉语辞书以“字头—注音—义项—书证”的线性形式组织内容,供人翻阅毫无问题,但机器需要显式结构。建模时可以围绕四类核心对象展开:
其中“义链”是最有价值的增量信息:市面上不少古汉语数据停留在“字头+释义列表”的扁平结构,而引申链恰恰是把知识从“可查”升级为“可算、可解释”的关键。
“行”的早期汉字字形(如甲骨文)像两条相交的道路,因此“道路”是本义。以此为根节点,可以梳理出一棵清晰的义项树:
道路(本义)├─ 人在道路上移动 ──→ 行走("三人行,必有我师焉")│ └─ 推及物体运动 ──→ 运行、运动("天行有常")├─ 在道路上做事 ──→ 做、执行、实行("言必信,行必果")│ └─ 抽象为立身准则 ──→ 品行("听其言而观其行")└─ 道路纵横成列 ──→ 行列(读 háng)
它对应的示意 Schema 如下:
{"character": "行","readings": ["xíng", "háng"],"senses": [{ "id": "s1", "gloss": "道路", "type": "本义","note": "字形像两条相交的道路", "derived": ["s2", "s4", "s6"] },{ "id": "s2", "gloss": "行走", "type": "引申","path": "道路→人的移动", "parent": "s1", "derived": ["s3"],"evidence": ["三人行,必有我师焉"] },{ "id": "s3", "gloss": "运行;运动", "type": "引申","path": "人的移动→物体的移动", "parent": "s2","evidence": ["天行有常"] },{ "id": "s4", "gloss": "做;执行;实行", "type": "引申","path": "在路上走→做某事", "parent": "s1", "derived": ["s5"],"evidence": ["言必信,行必果"] },{ "id": "s5", "gloss": "品行", "type": "引申","path": "做事→立身行事的准则", "parent": "s4","evidence": ["听其言而观其行"] },{ "id": "s6", "gloss": "行列", "type": "引申","path": "道路→纵横排列", "parent": "s1", "readings": ["háng"] }]}
通假关系则可以作为独立字段挂在字头上:
{"character": "说","phonetic_loan": {"target": "悦", "gloss": "高兴、喜悦","evidence": ["学而时习之,不亦说乎"]}}
给定字 c 及其上下文 ctx,从候选义项集合 S(c) 中选出当前语境下最合适的义项 s。它是注释生成、文白翻译、古籍检索等上层任务共享的基础能力。
示意代码:
def disambiguate(entry, context):"""根据上下文从候选义项中选择最合适的一项(示意)"""ctx_vec = encode(context)best, best_score = None, -1.0for sense in entry["senses"]:texts = sense.get("evidence") or [sense["gloss"]]vec = mean(encode(t) for t in texts)score = cosine(ctx_vec, vec) + prior(sense) # 先验:链上距离、义项频率if score > best_score:best, best_score = sense, scorereturn best
常用汉字规模在数千量级,但义项与书证可达数十万条。在线查检用哈希表按字头 O(1) 定位;同时预建两张归一化表——字形规范表(异体字、繁简对应)与通假关系表,在索引层把“说→悦”这类变体归一到规范字头,避免上层逻辑重复处理。
class CharKB:def __init__(self, entries, alias_map):self.by_char = {e["character"]: e for e in entries}self.alias = alias_map # 异体/繁简/通假 → 规范字头def lookup(self, ch):return self.by_char.get(self.alias.get(ch, ch))
一个典型的四层落地架构:
若在公有云环境落地,可以基于百度智能云等平台提供的通用能力组装上述各层,例如用对象存储托管字库快照、用容器平台承载推理服务、用日志服务与监控告警保障运行质量。架构的关键不在选型本身,而在于让字库版本、模型版本、线上效果三者始终可追溯——出现效果回退时,能快速定位到具体变更。
这些场景共享同一份字级知识库,边际成本低、复用价值高,这正是“以字为本”策略在经济性上的优势。
“因字而生句,积句而成章,积章而成篇”——古人的写作规律,同样是机器理解古籍的处理次序。把“一个字为什么会有这些意思、意思之间如何派生”这条链路数字化、结构化,不仅能让消歧、翻译、检索更准,也让古汉语学习本身多了一件工程化的脚手架。对开发者而言,这是一块投入不大、方法论清晰、却能托举所有上层应用的基建,值得在项目早期就认真规划。