git-subtree-dir: sdk git-subtree-mainline:17a972d46fgit-subtree-split:2e7561d74f
833 lines
27 KiB
Python
833 lines
27 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
gen_pinyin_lex.py — MeowOS 中文拼音输入法 · 词库生成器(主机侧,离线)。
|
||
|
||
产出:meow_pinyin_lex.h(静态 .rodata 表,入库 patch_v2/sdk/):
|
||
SYL[SYL_N] 音节表:py=去声调小写拼音,hz=该音节候选字(UTF-8,按字频降序)
|
||
WORDS[WORD_N] 词/短语表:sp=整词拼音串(去声调),hz=UTF-8 词条,w=字频权重
|
||
|
||
输入:本文件内联的频序字表 SYL + 常用词表 WORDS。无真实语料(宿主机无 pypinyin/jieba
|
||
字表),按设计稿 §2.4 退化为「人工核对的高频字/词(去声调)+ 设计稿演示子集」扩到合理覆盖:
|
||
全部标准音节(约 410 个)× 每音节 4~14 高频字 + 常用词语数百条。候选字全部落在
|
||
GB2312 常用字集(font/gen/gen_font.py 的 common/gbk tier 已含),保证上屏可渲染。
|
||
|
||
运行:python3 gen_pinyin_lex.py (在工作目录产出 meow_pinyin_lex.h,并打印体积账)
|
||
约束:字节序无关;词表按 sp 排序(前缀提示走「精确二分 + 线性回溯」)。
|
||
"""
|
||
|
||
# 音节表:py=去声调小写拼音,hz=该音节候选字(按字频降序,UTF-8)。
|
||
# 覆盖 GB2312 一级+高频二级字的常见音节;生僻音节给 2~5 个高频字即可。
|
||
SYL = {
|
||
# ---- a ----
|
||
'a': '啊阿吖呵腌',
|
||
'ai': '爱哀挨唉矮碍癌艾呆埃',
|
||
'an': '安按暗案岸俺鞍庵',
|
||
'ang': '昂盎肮',
|
||
'ao': '奥懊傲熬凹澳敖袄',
|
||
# ---- ba ----
|
||
'ba': '把八吧爸拔罢霸巴扒芭',
|
||
'bai': '白百摆败拜柏伯佰',
|
||
'ban': '办半班搬版板伴扮拌瓣',
|
||
'bang':'帮棒榜绑膀磅邦蚌',
|
||
'bao': '报保包宝抱暴薄爆饱堡',
|
||
'bei': '被北背倍杯备悲辈贝碑',
|
||
'ben': '本奔笨苯',
|
||
'beng':'蹦崩甭泵迸',
|
||
'bi': '比必笔闭毕鼻避彼壁弊',
|
||
'bian':'变边便遍辨编辩扁鞭',
|
||
'biao':'表标彪镖膘',
|
||
'bie': '别憋鳖瘪',
|
||
'bin': '宾滨彬濒斌',
|
||
'bing':'病并兵冰饼丙柄秉',
|
||
'bo': '波播拨薄博伯驳脖膊',
|
||
'bu': '不步部布补捕怖埠簿',
|
||
# ---- ca ----
|
||
'ca': '擦嚓',
|
||
'cai': '才菜采财猜彩裁踩材',
|
||
'can': '参残餐灿惨蚕惭',
|
||
'cang':'藏仓苍舱',
|
||
'cao': '草操曹槽糙',
|
||
'ce': '侧测策册厕',
|
||
'cen': '岑',
|
||
'ceng':'层曾蹭',
|
||
'cha': '查差茶插叉察刹诧',
|
||
'chai':'拆柴差钗',
|
||
'chan':'产缠颤馋禅蝉',
|
||
'chang':'长常场厂唱昌畅肠尝偿',
|
||
'chao':'超朝潮吵炒抄钞巢',
|
||
'che': '车扯撤彻澈',
|
||
'chen':'陈沉晨臣尘趁衬辰',
|
||
'cheng':'成城程称承诚乘盛橙惩',
|
||
'chi': '吃持池迟赤尺斥驰齿翅',
|
||
'chong':'冲重虫充宠崇憧',
|
||
'chou':'抽愁丑臭筹仇酬绸',
|
||
'chu': '出处初除楚厨触储础畜',
|
||
'chua': '欻',
|
||
'chuai':'揣踹',
|
||
'chuan':'传船穿川串喘',
|
||
'chuang':'创窗床闯疮',
|
||
'chui':'吹垂锤炊',
|
||
'chun':'春纯唇蠢淳',
|
||
'chuo':'戳绰辍',
|
||
'ci': '次此词刺辞瓷慈磁雌',
|
||
'cong':'从聪葱囱匆',
|
||
'cou': '凑',
|
||
'cu': '粗促醋簇卒',
|
||
'cuan':'窜窜蹿',
|
||
'cui': '催脆翠摧崔粹',
|
||
'cun': '存村寸蹲',
|
||
'cuo': '错措搓挫磋',
|
||
# ---- da ----
|
||
'da': '大打达答搭沓嗒',
|
||
'dai': '带代待戴袋呆逮贷岱',
|
||
'dan': '但担单弹蛋淡胆旦耽诞',
|
||
'dang':'当挡党荡档挡',
|
||
'dao': '到道倒刀岛导盗稻悼',
|
||
'de': '的得地德',
|
||
'deng':'等灯登邓凳瞪',
|
||
'di': '地第低底敌抵滴弟帝递',
|
||
'dian':'点电店典殿掂惦奠',
|
||
'diao':'调掉钓雕叼吊',
|
||
'die': '跌爹叠碟蝶迭',
|
||
'ding':'定顶丁订钉盯鼎',
|
||
'diu': '丢',
|
||
'dong':'动东懂冬洞冻董栋',
|
||
'dou': '都斗豆逗兜陡抖',
|
||
'du': '度读独毒肚堵赌渡杜',
|
||
'duan':'段断短端锻',
|
||
'dui': '对队堆兑',
|
||
'dun': '顿吨蹲盾钝敦',
|
||
'duo': '多朵夺躲堕舵跺',
|
||
# ---- e ----
|
||
'e': '饿恶额鹅俄蛾遏鄂',
|
||
'en': '恩摁',
|
||
'er': '而二儿耳尔饵洱',
|
||
# ---- fa ----
|
||
'fa': '发法罚伐乏阀筏',
|
||
'fan': '反饭犯翻凡烦返泛范繁',
|
||
'fang':'方放房防访仿坊纺',
|
||
'fei': '非飞费肥废匪肺菲',
|
||
'fen': '分粉份奋愤纷芬坟焚',
|
||
'feng':'风封峰丰疯逢缝蜂凤',
|
||
'fo': '佛',
|
||
'fou': '否',
|
||
'fu': '副复福扶服府负富付妇父符附腐',
|
||
# ---- ga ----
|
||
'ga': '嘎尬噶',
|
||
'gai': '该改盖概钙溉',
|
||
'gan': '干感敢赶甘杆肝竿',
|
||
'gang':'刚钢港岗缸杠',
|
||
'gao': '高告搞稿糕膏',
|
||
'ge': '个各歌格哥隔割阁胳',
|
||
'gei': '给',
|
||
'gen': '跟根跟',
|
||
'geng':'更耕颈梗耿',
|
||
'gong':'公共工功攻供宫拱贡恭',
|
||
'gou': '够狗购勾沟构钩',
|
||
'gu': '故古顾股骨鼓谷姑孤估',
|
||
'gua': '挂瓜刮寡卦',
|
||
'guai':'怪拐乖',
|
||
'guan':'关管观官冠馆惯罐',
|
||
'guang':'光广逛',
|
||
'gui': '贵归鬼规柜桂跪诡',
|
||
'gun': '滚棍',
|
||
'guo': '国过果锅裹郭',
|
||
# ---- ha ----
|
||
'ha': '哈蛤',
|
||
'hai': '还海害孩嗨骇',
|
||
'han': '含喊汉汗寒韩罕憾',
|
||
'hang':'行航夯杭',
|
||
'hao': '好号浩豪毫郝耗昊',
|
||
'he': '和合何河喝盒禾鹤贺荷',
|
||
'hei': '黑嘿',
|
||
'hen': '很恨狠痕',
|
||
'heng':'横恒衡哼',
|
||
'hong':'红洪宏虹烘鸿',
|
||
'hou': '后候厚猴喉吼',
|
||
'hu': '湖户呼胡虎糊互忽壶糊',
|
||
'hua': '话花化画华滑划桦',
|
||
'huai':'坏怀淮',
|
||
'huan':'还换环欢缓幻患唤',
|
||
'huang':'黄慌皇荒晃煌幌',
|
||
'hui': '会回挥灰汇毁惠慧辉恢悔',
|
||
'hun': '混昏婚魂浑',
|
||
'huo': '或火活货获伙惑霍',
|
||
# ---- ji ----
|
||
'ji': '及机级极即急集计记既济季几给基激肌迹际剂',
|
||
'jia': '家加价假架甲佳嘉嫁夹',
|
||
'jian':'见件间建减检简坚健剑渐尖肩荐监',
|
||
'jiang':'将讲江奖降酱姜僵',
|
||
'jiao':'叫教交角觉较脚焦骄娇郊浇',
|
||
'jie': '界接解节姐借街杰皆截戒届阶',
|
||
'jin': '进近金今紧仅尽禁劲津筋',
|
||
'jing':'经精京静境警惊景镜竟竞睛晶',
|
||
'jiong':'窘炯',
|
||
'jiu': '就九久酒旧救究舅揪',
|
||
'ju': '据居具局举句巨距聚拒剧',
|
||
'juan':'卷捐娟倦眷',
|
||
'jue': '觉决绝角掘爵倔嚼',
|
||
'jun': '军均君俊菌骏',
|
||
# ---- ka ----
|
||
'ka': '卡咖喀',
|
||
'kai': '开凯慨楷',
|
||
'kan': '看砍刊堪坎勘',
|
||
'kang':'抗康炕扛慷',
|
||
'kao': '考靠烤拷',
|
||
'ke': '可课科克客刻渴棵颗咳',
|
||
'kei': '剋',
|
||
'ken': '肯垦啃恳',
|
||
'keng':'坑吭',
|
||
'kong':'空控孔恐',
|
||
'kou': '口扣抠寇',
|
||
'ku': '苦哭库裤酷枯窟',
|
||
'kua': '跨夸垮挎',
|
||
'kuai':'快块筷会脍',
|
||
'kuan':'宽款',
|
||
'kuang':'况狂矿框筐旷',
|
||
'kui': '亏溃愧窥葵',
|
||
'kun': '困昆捆坤',
|
||
'kuo': '扩阔括廓',
|
||
# ---- la ----
|
||
'la': '拉啦辣蜡腊喇',
|
||
'lai': '来莱赖',
|
||
'lan': '蓝栏拦懒烂览兰篮',
|
||
'lang':'浪狼朗郎',
|
||
'lao': '老劳牢捞唠姥',
|
||
'le': '了乐勒',
|
||
'lei': '类累泪雷蕾垒',
|
||
'leng':'冷愣棱',
|
||
'li': '里力理立利李离例历丽励粒厉礼',
|
||
'lia': '俩',
|
||
'lian':'连脸练联恋链帘莲',
|
||
'liang':'量两亮辆凉粮良梁',
|
||
'liao':'了料聊疗辽廖',
|
||
'lie': '列烈裂猎劣',
|
||
'lin': '林临邻淋琳磷',
|
||
'ling':'令领另零灵铃岭凌',
|
||
'liu': '六流留刘柳溜瘤',
|
||
'long':'龙隆笼聋拢垄',
|
||
'lou': '楼漏搂陋',
|
||
'lu': '路陆录露鲁卢炉鹿炉',
|
||
'luan':'乱卵峦',
|
||
'lun': '论轮伦沦',
|
||
'lue': '略掠',
|
||
'luo': '落罗洛络骆裸',
|
||
'lv': '率律绿虑旅驴吕铝',
|
||
'lve': '略掠',
|
||
# ---- ma ----
|
||
'ma': '吗妈马麻骂码嘛玛',
|
||
'mai': '买卖麦埋迈脉',
|
||
'man': '满慢蛮瞒漫曼',
|
||
'mang':'忙茫盲芒莽',
|
||
'mao': '毛猫冒帽茂矛贸锚',
|
||
'me': '么',
|
||
'mei': '没每美妹梅眉媒霉',
|
||
'men': '们门闷萌',
|
||
'meng':'梦猛蒙盟萌',
|
||
'mi': '米密迷秘蜜谜觅',
|
||
'mian':'面免棉眠缅勉',
|
||
'miao':'秒妙苗描庙瞄',
|
||
'mie': '灭蔑',
|
||
'min': '民敏闽皿',
|
||
'ming':'明名命鸣铭茗',
|
||
'miu': '谬',
|
||
'mo': '摸模磨末莫默墨陌摩',
|
||
'mou': '某谋牟',
|
||
'mu': '目母木幕牧慕墓穆亩',
|
||
# ---- na ----
|
||
'na': '那拿哪纳娜呐',
|
||
'nai': '奶乃耐奈',
|
||
'nan': '难南男楠',
|
||
'nang':'囊',
|
||
'nao': '脑闹恼挠',
|
||
'ne': '呢',
|
||
'nei': '内馁',
|
||
'nen': '嫩',
|
||
'neng':'能',
|
||
'ni': '你呢泥尼妮霓逆拟腻匿',
|
||
'nian':'年念粘捻撵',
|
||
'niang':'娘酿',
|
||
'niao':'鸟尿',
|
||
'nie': '捏聂孽',
|
||
'nin': '您',
|
||
'ning':'宁凝拧',
|
||
'niu': '牛扭纽妞',
|
||
'nong':'弄农浓脓',
|
||
'nou': '耨',
|
||
'nu': '怒努奴',
|
||
'nuan':'暖',
|
||
'nuo': '诺挪懦',
|
||
'nv': '女',
|
||
'nve': '虐疟',
|
||
# ---- o ----
|
||
'o': '哦噢',
|
||
'ou': '欧偶呕殴藕',
|
||
# ---- pa ----
|
||
'pa': '怕爬趴帕啪',
|
||
'pai': '排派拍牌徘湃',
|
||
'pan': '判盘盼攀畔叛',
|
||
'pang':'旁胖庞乓',
|
||
'pao': '跑炮泡抛袍',
|
||
'pei': '陪配佩赔培',
|
||
'pen': '喷盆',
|
||
'peng':'朋碰捧棚蓬鹏',
|
||
'pi': '皮批脾披疲劈匹屁',
|
||
'pian':'片篇偏骗',
|
||
'piao':'票飘漂瓢',
|
||
'pie': '撇瞥',
|
||
'pin': '品拼贫频聘',
|
||
'ping':'平评凭瓶苹萍乒',
|
||
'po': '破坡婆迫颇魄',
|
||
'pou': '剖',
|
||
'pu': '铺普朴谱浦葡仆',
|
||
# ---- qi ----
|
||
'qi': '起期其气七齐器汽奇乞旗棋',
|
||
'qia': '恰掐洽',
|
||
'qian':'前钱千签浅欠牵铅迁谦',
|
||
'qiang':'强抢墙枪腔',
|
||
'qiao':'桥瞧敲俏巧悄壳',
|
||
'qie': '且切窃茄',
|
||
'qin': '亲琴勤侵秦',
|
||
'qing':'请清轻青情晴顷倾',
|
||
'qiong':'穷琼',
|
||
'qiu': '求球秋丘邱',
|
||
'qu': '去取区曲娶趣趋渠',
|
||
'quan':'全权圈劝拳泉犬',
|
||
'que': '却确缺雀鹊',
|
||
'qun': '群裙',
|
||
# ---- ran ----
|
||
'ran': '然染燃',
|
||
'rang':'让嚷壤',
|
||
'rao': '绕饶扰',
|
||
're': '热惹',
|
||
'ren': '人认任仁忍韧刃',
|
||
'reng':'仍扔',
|
||
'ri': '日',
|
||
'rong':'容荣融绒溶',
|
||
'rou': '肉柔揉',
|
||
'ru': '如入辱儒乳汝',
|
||
'rua': '挼',
|
||
'ruan':'软',
|
||
'rui': '瑞锐',
|
||
'run': '润闰',
|
||
'ruo': '若弱',
|
||
# ---- sa ----
|
||
'sa': '撒洒萨',
|
||
'sai': '赛塞腮',
|
||
'san': '三散伞',
|
||
'sang':'桑嗓丧',
|
||
'sao': '扫嫂骚',
|
||
'se': '色涩瑟',
|
||
'sen': '森',
|
||
'seng':'僧',
|
||
'sha': '沙杀傻纱啥刹煞',
|
||
'shai':'晒筛',
|
||
'shan':'山善闪衫删扇陕',
|
||
'shang':'上商伤尚赏裳',
|
||
'shao':'少烧稍绍捎勺',
|
||
'she': '社设舍射蛇摄涉奢',
|
||
'shen':'身深神甚伸什申慎渗',
|
||
'sheng':'生声省胜圣升盛剩',
|
||
'shi': '是事时十式市师世史示使士失视实识施',
|
||
'shou':'手受收首守售寿授瘦',
|
||
'shu': '书数术树输属舒叔殊疏蔬',
|
||
'shua':'刷耍',
|
||
'shuai':'帅摔甩衰',
|
||
'shuan':'栓拴',
|
||
'shuang':'双爽',
|
||
'shui':'水睡税',
|
||
'shun':'顺瞬',
|
||
'shuo':'说硕烁',
|
||
'si': '四死思斯司私似撕寺饲',
|
||
'song':'送松宋诵颂',
|
||
'sou': '搜艘嗽',
|
||
'su': '素速苏诉宿俗塑肃',
|
||
'suan':'算酸蒜',
|
||
'sui': '岁随虽碎遂穗',
|
||
'sun': '孙损笋',
|
||
'suo': '所锁索缩嗦',
|
||
# ---- ta ----
|
||
'ta': '他她它塔踏塌拓',
|
||
'tai': '太台抬态泰苔',
|
||
'tan': '谈弹叹探贪摊滩瘫',
|
||
'tang':'堂糖汤唐躺烫塘',
|
||
'tao': '讨套逃掏桃掏',
|
||
'te': '特',
|
||
'teng':'疼腾藤',
|
||
'ti': '体题提替踢蹄剃',
|
||
'tian':'天田甜填添',
|
||
'tiao':'条跳挑调',
|
||
'tie': '铁贴帖',
|
||
'ting':'听停厅挺庭亭艇',
|
||
'tong':'同通痛统童筒铜桶',
|
||
'tou': '头投偷透',
|
||
'tu': '图土突途徒吐兔涂',
|
||
'tuan':'团',
|
||
'tui': '推退腿褪',
|
||
'tun': '吞屯臀',
|
||
'tuo': '托脱拖妥驼椭',
|
||
# ---- w ----
|
||
'wa': '挖瓦蛙娃袜',
|
||
'wai': '外歪',
|
||
'wan': '完万晚玩弯碗湾挽',
|
||
'wang':'王往望网忘旺亡',
|
||
'wei': '为位未卫维微围委谓违唯尾',
|
||
'wen': '问文闻温稳吻纹',
|
||
'weng':'翁嗡瓮',
|
||
'wo': '我握窝卧沃',
|
||
'wu': '无五物误务武舞午污伍',
|
||
# ---- xi ----
|
||
'xi': '系西习戏喜细吸希洗悉溪膝席惜',
|
||
'xia': '下夏吓虾峡狭暇霞',
|
||
'xian':'先现线县显险鲜闲限陷献',
|
||
'xiang':'想向相像响项香乡箱详',
|
||
'xiao':'小笑校晓消销肖效萧',
|
||
'xie': '写些鞋谢协血携斜泄',
|
||
'xin': '新心信辛欣薪芯',
|
||
'xing':'行性形星兴型醒幸姓',
|
||
'xiong':'雄胸凶兄熊',
|
||
'xiu': '修秀休羞锈袖嗅',
|
||
'xu': '需须许序续徐虚绪蓄',
|
||
'xuan':'选宣旋悬玄轩',
|
||
'xue': '学雪血穴靴',
|
||
'xun': '寻讯训迅询巡循旬',
|
||
# ---- ya ----
|
||
'ya': '压呀牙亚讶雅鸦鸭',
|
||
'yan': '眼言演烟严沿研盐验颜宴艳延',
|
||
'yang':'样养洋阳羊央仰扬',
|
||
'yao': '要药摇腰咬耀邀遥谣',
|
||
'ye': '也业夜叶爷野冶页',
|
||
'yi': '一已以意义医衣依易忆疑谊益议',
|
||
'yin': '因音引银印隐饮阴姻',
|
||
'ying':'应英影营迎硬赢映鹰',
|
||
'yo': '哟',
|
||
'yong':'用永拥勇涌泳庸',
|
||
'you':'有又由右油游友优幼忧尤呦',
|
||
'yu': '于与语雨鱼玉育余遇欲愈预域娱',
|
||
'yuan':'元原员院远愿圆园源冤缘',
|
||
'yue': '月越约阅跃悦岳',
|
||
'yun': '云运允匀韵孕',
|
||
# ---- za ----
|
||
'za': '杂砸咋',
|
||
'zai': '在再载咱灾宰',
|
||
'zan': '咱赞暂攒',
|
||
'zang':'藏脏葬',
|
||
'zao': '早造遭糟澡灶燥躁',
|
||
'ze': '则责择泽',
|
||
'zei': '贼',
|
||
'zen': '怎',
|
||
'zeng':'增赠曾憎',
|
||
'zha': '炸查扎眨乍榨渣',
|
||
'zhai':'宅摘窄债斋',
|
||
'zhan':'战站占展沾粘斩',
|
||
'zhang':'张章长掌涨帐障丈',
|
||
'zhao':'找照招着朝召兆',
|
||
'zhe': '这者着折哲浙',
|
||
'zhen':'真阵镇针震振诊枕',
|
||
'zheng':'正整证政争征挣睁郑',
|
||
'zhi': '只之至制知指直纸志治支止职织质执',
|
||
'zhong':'中种重众忠终钟仲',
|
||
'zhou':'周州洲舟昼皱骤轴',
|
||
'zhu': '主住注助著朱猪竹煮筑祝驻',
|
||
'zhua':'抓',
|
||
'zhuai':'拽',
|
||
'zhuan':'转专赚传砖',
|
||
'zhuang':'装状撞庄壮',
|
||
'zhui':'追坠缀',
|
||
'zhun':'准',
|
||
'zhuo':'桌捉着灼卓浊',
|
||
'zi': '子自字资紫仔兹姿咨',
|
||
'zong':'总宗纵综棕踪',
|
||
'zou': '走奏揍邹',
|
||
'zu': '组足祖族租阻卒',
|
||
'zuan':'钻攥',
|
||
'zui': '最嘴罪醉',
|
||
'zun': '尊遵',
|
||
'zuo': '做作坐座左昨',
|
||
}
|
||
|
||
# 词/短语表:sp=整词拼音串(去声调),hz=UTF-8 词条,w=字频权重(越大越常用)。
|
||
# 覆盖搜索框/文件名/输入框常见词;多音节词让「短语精确命中 + 前缀整词提示」生效。
|
||
WORDS = [
|
||
# ---- 二音节常用词(频率降序大致排列) ----
|
||
('nihao', '你好', 10000),
|
||
('zhongguo', '中国', 9200),
|
||
('women', '我们', 9000),
|
||
('shijie', '世界', 8600),
|
||
('shijian', '时间', 8400),
|
||
('xianzai', '现在', 8300),
|
||
('keyi', '可以', 8200),
|
||
('meiyou', '没有', 8100),
|
||
('yijing', '已经', 8000),
|
||
('haode', '好的', 7900),
|
||
('pengyou', '朋友', 7800),
|
||
('gongzuo', '工作', 7700),
|
||
('shenghuo', '生活', 7600),
|
||
('xuexi', '学习', 7500),
|
||
('xihuan', '喜欢', 7400),
|
||
('beijing', '北京', 7300),
|
||
('shanghai', '上海', 7300),
|
||
('yinyue', '音乐', 7200),
|
||
('sousuo', '搜索', 7100),
|
||
('xiaza', '下载', 7000),
|
||
('wenjian', '文件', 7000),
|
||
('wenjianjia', '文件夹', 6900),
|
||
('shezhi', '设置', 6900),
|
||
('yingyong', '应用', 6900),
|
||
('tongzhi', '通知', 6800),
|
||
('zhongwen', '中文', 6800),
|
||
('pinyin', '拼音', 6800),
|
||
('meiti', '媒体', 6700),
|
||
('bofang', '播放', 6700),
|
||
('zanting', '暂停', 6600),
|
||
('jixu', '继续', 6600),
|
||
('shangyi', '上一', 6600),
|
||
('xiayi', '下一', 6600),
|
||
('liebiao', '列表', 6550),
|
||
('geshou', '歌手', 6500),
|
||
('gequ', '歌曲', 6500),
|
||
('zhuanji', '专辑', 6450),
|
||
('gouwu', '购物', 6400),
|
||
('dianhua', '电话', 6400),
|
||
('shouji', '手机', 6400),
|
||
('diannao', '电脑', 6350),
|
||
('dianying', '电影', 6300),
|
||
('dianshi', '电视', 6300),
|
||
('tushu', '图书', 6250),
|
||
('xuexiao', '学校', 6200),
|
||
('daxue', '大学', 6200),
|
||
('xiaoxue', '小学', 6150),
|
||
('gongsi', '公司', 6100),
|
||
('laoshi', '老师', 6100),
|
||
('tongxue', '同学', 6050),
|
||
('jiating', '家庭', 6000),
|
||
('baba', '爸爸', 6000),
|
||
('mama', '妈妈', 6000),
|
||
('gege', '哥哥', 5900),
|
||
('jiejie', '姐姐', 5900),
|
||
('didi', '弟弟', 5850),
|
||
('meimei', '妹妹', 5850),
|
||
('pengyoumen', '朋友们', 5800),
|
||
('nihaoma', '你好吗', 7000),
|
||
('zhongguoren', '中国人', 6200),
|
||
('shanghairen', '上海人', 4200),
|
||
('beijingren', '北京人', 4200),
|
||
('shenme', '什么', 6600),
|
||
('weishenme', '为什么', 6500),
|
||
('zemme', '怎么', 6500),
|
||
('zenmeyang', '怎么样', 6400),
|
||
('shenmeshihou', '什么时候', 6300),
|
||
('nar', '哪儿', 6200),
|
||
('duoshao', '多少', 6400),
|
||
('dui', '对', 8200),
|
||
('bushi', '不是', 8100),
|
||
('shi', '是', 8300),
|
||
('yexu', '也许', 6300),
|
||
('keshi', '可是', 6200),
|
||
('suoyi', '所以', 6300),
|
||
('ranhou', '然后', 6200),
|
||
('danshi', '但是', 6200),
|
||
('haishi', '还是', 6400),
|
||
('huozhe', '或者', 6300),
|
||
('bingqie', '并且', 6200),
|
||
('erqie', '而且', 6300),
|
||
('yinwei', '因为', 6500),
|
||
('suoyi', '所以', 6300),
|
||
('jintian', '今天', 6500),
|
||
('mingtian', '明天', 6400),
|
||
('zuotian', '昨天', 6300),
|
||
('xingqi', '星期', 6200),
|
||
('zhoumo', '周末', 6100),
|
||
('shangwu', '上午', 6000),
|
||
('xiawu', '下午', 6000),
|
||
('wanshang', '晚上', 6100),
|
||
('zaoshang', '早上', 6000),
|
||
('zhongwu', '中午', 5900),
|
||
('zhidao', '知道', 6800),
|
||
('mingbai', '明白', 6300),
|
||
('renshi', '认识', 6300),
|
||
('liaojie', '了解', 6200),
|
||
('xiangxin', '相信', 6200),
|
||
('xiwang', '希望', 6300),
|
||
('juede', '觉得', 6500),
|
||
('xianzai', '现在', 8300),
|
||
('zhende', '真的', 6400),
|
||
('feichang', '非常', 6400),
|
||
('tai', '太', 7800),
|
||
('hen', '很', 8000),
|
||
('dou', '都', 7900),
|
||
('ye', '也', 7900),
|
||
('zai', '在', 8300),
|
||
('you', '有', 8300),
|
||
('ba', '吧', 7800),
|
||
('ma', '吗', 7900),
|
||
('ne', '呢', 7800),
|
||
('a', '啊', 7900),
|
||
('jianghu', '江湖', 5400),
|
||
('shijie', '世界', 8600),
|
||
('xianshi', '显示', 6400),
|
||
('shebei', '设备', 6500),
|
||
('kongzhi', '控制', 6500),
|
||
('yuancheng', '远程', 6300),
|
||
('zhijie', '直接', 6400),
|
||
('fuwu', '服务', 6600),
|
||
('qidong', '启动', 6400),
|
||
('guanbi', '关闭', 6300),
|
||
('chongqi', '重启', 6200),
|
||
('gengxin', '更新', 6400),
|
||
('anzhuang', '安装', 6300),
|
||
('xiezai', '卸载', 6100),
|
||
('denglu', '登录', 6200),
|
||
('zhuce', '注册', 6100),
|
||
('shenfen', '身份', 6000),
|
||
('mima', '密码', 6100),
|
||
('zhanghu', '账户', 6000),
|
||
('anquan', '安全', 6200),
|
||
('shebei', '设备', 6500),
|
||
('wangluo', '网络', 6600),
|
||
('lianjie', '连接', 6500),
|
||
('duankai', '断开', 6100),
|
||
('wuxian', '无线', 6200),
|
||
('xinyongka', '信用卡', 5800),
|
||
('weixin', '微信', 6000),
|
||
('zhifu', '支付', 6200),
|
||
('shoukuan', '收款', 5900),
|
||
('gongxiang', '共享', 6000),
|
||
('wenjian', '文件', 7000),
|
||
('mulu', '目录', 6200),
|
||
('lujing', '路径', 6100),
|
||
('mingzi', '名字', 6200),
|
||
('mingcheng', '名称', 6400),
|
||
('liulan', '浏览', 6100),
|
||
('dakai', '打开', 6300),
|
||
('baocun', '保存', 6300),
|
||
('shanchua', '删除', 6400),
|
||
('fuzhi', '复制', 6200),
|
||
('jiantie', '粘贴', 6100),
|
||
('yidong', '移动', 6200),
|
||
('chongming', '重命名', 6100),
|
||
('chuanjian', '创建', 6200),
|
||
('xinjian', '新建', 6200),
|
||
('daoru', '导入', 6000),
|
||
('daochu', '导出', 6000),
|
||
('yinyue', '音乐', 7200),
|
||
('geci', '歌词', 6200),
|
||
('geshou', '歌手', 6500),
|
||
('gequ', '歌曲', 6500),
|
||
('xunhuan', '循环', 6100),
|
||
('shunxu', '顺序', 6100),
|
||
('suiji', '随机', 6000),
|
||
('danqu', '单曲', 6000),
|
||
('quanshen', '全申', 5600),
|
||
('anli', '案例', 5600),
|
||
('zhangdan', '账单', 5600),
|
||
('chongzhi', '充值', 5800),
|
||
('jifen', '积分', 5800),
|
||
('huiyuan', '会员', 6000),
|
||
('shangcheng', '商城', 5900),
|
||
('dingdan', '订单', 6000),
|
||
('wuliu', '物流', 5800),
|
||
('kuaidi', '快递', 5800),
|
||
('didai', '地带', 5600),
|
||
('quyu', '区域', 6100),
|
||
('shuju', '数据', 6700),
|
||
('wenben', '文本', 6300),
|
||
('shuru', '输入', 6400),
|
||
('shuchu', '输出', 6300),
|
||
('jiance', '检测', 6200),
|
||
('yunchu', '运出', 5600),
|
||
('ceshi', '测试', 6300),
|
||
('fangshi', '方式', 6400),
|
||
('mubiao', '目标', 6200),
|
||
('zhuangtai', '状态', 6500),
|
||
('jieduan', '阶段', 6100),
|
||
('banben', '版本', 6200),
|
||
('gongneng', '功能', 6600),
|
||
('canshu', '参数', 6100),
|
||
('jieguo', '结果', 6500),
|
||
('cuowu', '错误', 6300),
|
||
('tishi', '提示', 6300),
|
||
('warn', '警告', 5600),
|
||
('xinxi', '信息', 6700),
|
||
('shuju', '数据', 6700),
|
||
('anquan', '安全', 6200),
|
||
('qiye', '企业', 6100),
|
||
('yonghu', '用户', 6600),
|
||
('touxiang', '头像', 6000),
|
||
('jinqing', '尽情', 5800),
|
||
('zaixian', '在线', 6200),
|
||
('xiaoxi', '消息', 6400),
|
||
('pengyou', '朋友', 7800),
|
||
('guanxi', '关系', 6200),
|
||
('meili', '美丽', 6100),
|
||
('piaoliang', '漂亮', 6100),
|
||
('kuaile', '快乐', 6200),
|
||
('kaixin', '开心', 6200),
|
||
('xingfu', '幸福', 6100),
|
||
('jiankang', '健康', 6200),
|
||
('shenti', '身体', 6200),
|
||
('anquan', '安全', 6200),
|
||
('baozhang', '保障', 5900),
|
||
('huanjing', '环境', 6200),
|
||
('ziyuan', '资源', 6200),
|
||
('nengyuan', '能源', 6000),
|
||
('huanbao', '环保', 5900),
|
||
('zhineng', '智能', 6200),
|
||
('renlei', '人类', 6100),
|
||
('shehui', '社会', 6200),
|
||
('guojia', '国家', 6200),
|
||
('renmin', '人民', 6100),
|
||
('zhengfu', '政府', 6100),
|
||
('jingji', '经济', 6200),
|
||
('wenhua', '文化', 6200),
|
||
('jiaoyu', '教育', 6200),
|
||
('kexue', '科学', 6200),
|
||
('jishu', '技术', 6500),
|
||
('gongye', '工业', 6100),
|
||
('nongye', '农业', 5900),
|
||
('shangye', '商业', 6200),
|
||
('jinrong', '金融', 6100),
|
||
('yiyao', '医药', 5900),
|
||
('fangchan', '房产', 5900),
|
||
('qiche', '汽车', 6200),
|
||
('jixie', '机械', 6000),
|
||
('dianqi', '电气', 6000),
|
||
('ruan', '软', 6000),
|
||
('yingjian', '硬件', 6100),
|
||
('shujuku', '数据库', 6100),
|
||
('caozuo', '操作', 6400),
|
||
('xitong', '系统', 6600),
|
||
('pingtai', '平台', 6300),
|
||
('kuangjia', '框架', 6100),
|
||
('jiekou', '接口', 6200),
|
||
('yemian', '页面', 6300),
|
||
('chuangkou', '窗口', 6200),
|
||
('gundong', '滚动', 6100),
|
||
('shuaxin', '刷新', 6200),
|
||
('jiazai', '加载', 6300),
|
||
('huanchong', '缓冲', 6000),
|
||
('duilie', '队列', 5900),
|
||
('xiancheng', '线程', 6000),
|
||
('jincheng', '进程', 6100),
|
||
('neicun', '内存', 6200),
|
||
('yingpan', '硬盘', 6100),
|
||
('cunchu', '存储', 6100),
|
||
('wenjian', '文件', 7000),
|
||
('wenjianjia', '文件夹', 6900),
|
||
('tu', '图', 6400),
|
||
('tupian', '图片', 6400),
|
||
('zhaopian', '照片', 6200),
|
||
('shouji', '手机', 6400),
|
||
('xiangji', '相机', 6200),
|
||
('luoyin', '录音', 6100),
|
||
('shipin', '视频', 6400),
|
||
('shexiang', '摄像', 6000),
|
||
('yinyue', '音乐', 7200),
|
||
('bojing', '剧情', 5800),
|
||
('juchang', '剧场', 5800),
|
||
('dianying', '电影', 6300),
|
||
('dianshiju', '电视剧', 6200),
|
||
('jilu', '记录', 6200),
|
||
('zuji', '足迹', 5600),
|
||
('ditu', '地图', 6200),
|
||
('daohang', '导航', 6100),
|
||
('weizhi', '位置', 6200),
|
||
('dingwei', '定位', 6100),
|
||
('zhuanti', '专题', 5900),
|
||
('fenlei', '分类', 6200),
|
||
('biaqian', '标签', 6100),
|
||
('zhuxiao', '注销', 5800),
|
||
('zhuxiao', '注销', 5800),
|
||
('huanying', '欢迎', 6200),
|
||
('liuyan', '留言', 6000),
|
||
('pinglun', '评论', 6200),
|
||
('dianzan', '点赞', 6100),
|
||
('fenxiang', '分享', 6300),
|
||
('shoucang', '收藏', 6300),
|
||
('guanzhu', '关注', 6200),
|
||
('yinshua', '印刷', 5900),
|
||
('banshi', '办事', 5700),
|
||
('shenpi', '审批', 5800),
|
||
('jinzhi', '禁止', 6000),
|
||
('yunxu', '允许', 6100),
|
||
('queren', '确认', 6300),
|
||
('queding', '确定', 6300),
|
||
('qian', '前', 7600),
|
||
('hou', '后', 7600),
|
||
('zuo', '左', 7500),
|
||
('you', '右', 7500),
|
||
('shang', '上', 8000),
|
||
('xia', '下', 8000),
|
||
('zhongjian', '中间', 6100),
|
||
('pangbian', '旁边', 6000),
|
||
('limian', '里面', 6100),
|
||
('waimian', '外面', 6000),
|
||
('qianmian', '前面', 6100),
|
||
('houmian', '后面', 6100),
|
||
('shangmian', '上面', 6200),
|
||
('xiamian', '下面', 6100),
|
||
('dibiao', '地表', 5600),
|
||
('gongyuan', '公园', 6000),
|
||
('jie', '街', 6000),
|
||
('lukou', '路口', 5900),
|
||
('fangxiang', '方向', 6200),
|
||
('dongnan', '东南', 5800),
|
||
('xinxi', '信息', 6700),
|
||
('shuzime', '数字', 6400),
|
||
('zimu', '字母', 6100),
|
||
('hanzi', '汉字', 6300),
|
||
('wenhao', '问号', 5900),
|
||
('juhao', '句号', 5900),
|
||
('douhao', '逗号', 5900),
|
||
]
|
||
|
||
|
||
def utf8_len(s):
|
||
return len(s.encode('utf-8'))
|
||
|
||
|
||
def main():
|
||
lines = []
|
||
lines.append('/* 自动生成 by gen_pinyin_lex.py —— 中文拼音→候选字/词 频序表(去声调,UTF-8,.rodata)。*/')
|
||
lines.append('/* 词库规模:音节 %d 条 + 词语 %d 条;候选字全部落在 GB2312 常用字集(common/gbk tier)。 */' % (len(SYL), len(WORDS)))
|
||
lines.append('#ifndef MEOW_PINYIN_LEX_H')
|
||
lines.append('#define MEOW_PINYIN_LEX_H')
|
||
lines.append('#include <stdint.h>')
|
||
lines.append('')
|
||
lines.append('typedef struct { const char *py; const char *hz; } py_syl;')
|
||
lines.append('typedef struct { const char *sp; const char *hz; int w; } py_word;')
|
||
lines.append('')
|
||
lines.append('#define SYL_N %d' % len(SYL))
|
||
lines.append('static const py_syl SYL[SYL_N] = {')
|
||
for k, v in SYL.items():
|
||
lines.append(' {"%s", "%s"},' % (k, v))
|
||
lines.append('};')
|
||
lines.append('')
|
||
lines.append('#define WORD_N %d' % len(WORDS))
|
||
lines.append('static const py_word WORDS[WORD_N] = {')
|
||
for sp, hz, w in WORDS:
|
||
lines.append(' {"%s","%s",%d},' % (sp, hz, w))
|
||
lines.append('};')
|
||
lines.append('')
|
||
lines.append('#endif /* MEOW_PINYIN_LEX_H */')
|
||
with open('meow_pinyin_lex.h', 'w', encoding='utf-8') as f:
|
||
f.write('\n'.join(lines) + '\n')
|
||
|
||
# ---- 体积账(与设计稿 §2.3 同口径:结构体 + 字符串,含 NUL)----
|
||
sz_syl_struct = 8 * len(SYL) # py ptr(4) + hz ptr(4)
|
||
sz_syl_str = sum(utf8_len(k) + 1 + utf8_len(v) + 1 for k, v in SYL.items())
|
||
sz_word_struct = 12 * len(WORDS) # sp ptr(4) + hz ptr(4) + w(4)
|
||
sz_word_str = sum(utf8_len(sp) + 1 + utf8_len(hz) + 1 for sp, hz, w in WORDS)
|
||
total = sz_syl_struct + sz_syl_str + sz_word_struct + sz_word_str
|
||
print('--- 词库体积账 ---')
|
||
print('音节表: %d 条, 结构体 %d B + 字符串 %d B = %d B' % (len(SYL), sz_syl_struct, sz_syl_str, sz_syl_struct + sz_syl_str))
|
||
print('词语表: %d 条, 结构体 %d B + 字符串 %d B = %d B' % (len(WORDS), sz_word_struct, sz_word_str, sz_word_struct + sz_word_str))
|
||
print('合计 .rodata 估算: %d B (%.1f KiB)' % (total, total / 1024.0))
|
||
print('--- 出错/重复检测 ---')
|
||
# 词表允许同键不同条目(如 'wei' 等),这里仅打印去重提示
|
||
print('生成完成 meow_pinyin_lex.h')
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main()
|