feat(sdk): 中文拼音输入法落地 (agent-229, 设计稿 IME_PINYIN_DESIGN.md) — 静态表词库(403音节+329词,rodata ~20.5KB,零堆)+引擎(meow_pinyin.c,音节切分DFS+联想)+SDK集成(MEOW_IME_PINYIN尾部追加零ABI破坏,组合条+候选栏+翻页+中英切换,英文零回归)
meow_ui.a→a7a9043e; hello/files/ncm重链已部署; test_pinyin 5项全过+test_ime_fix零回归
This commit is contained in:
1 parent
f34818037f
commit
e9b6b690c1
16 files changed
+2261
-11
No files matched your search
@@ -0,0 +1,832 @@
|
||||
# -*- 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()
|
||||
Reference in new issue
Block a user