拼音如何切词:从音节歧义到中文分词的完整链路
引子你敲下 woaizhongguo,输入法瞬间吐出「我爱中国」。中间那道没有空格的拼音串,是怎么被「切」成「我 / 爱 / 中 / 国」四个词的? 这件事远比看上去难。汉语书面语没有词边界,而拼音作为汉字的转写,同样没有边界——声母、韵母可以无休止地黏连成一长串字母,且大量合法的切分方式同时存在。拼音切词(pinyin segmentation)本质上要解决两层问题:先把这串字母切成合法的音节,再把音节序列解码成最像人话的汉字与词。 本文顺着「切音 → 解码 → 分词」的链路逐层拆开,并用可运行的最小代码把歧义和消歧都演示出来。 一、第一层:拼音音节切分(切音)拼音的最小单位是音节:一个音节由「声母(可空)+ 韵母」构成,如 zh + ang = zhang,或零声母的 an、er。切音的目标,是把无空格的字母串切成一串「每一个片段都是合法音节」的序列。 做法很朴素:准备一张合法音节词典,再用动态规划(或回溯枚举)把所有合法切分找出来。下面这张图是切音的执行模型——它像在一串字符上不断「试切」,只要切出来的片段在词典里就放行: 12345...

