diff --git a/examples/ngram_lm/.gitignore b/examples/ngram_lm/.gitignore new file mode 100644 index 000000000..fd7c578e1 --- /dev/null +++ b/examples/ngram_lm/.gitignore @@ -0,0 +1 @@ +exp/ diff --git a/examples/ngram_lm/data/README.md b/examples/ngram_lm/data/README.md new file mode 100644 index 000000000..514f17b60 --- /dev/null +++ b/examples/ngram_lm/data/README.md @@ -0,0 +1,2 @@ +text_correct.txt: https://github.com/shibing624/pycorrector/raw/master/tests/test_file.txt +custom_confusion.txt: https://github.com/shibing624/pycorrector/raw/master/tests/custom_confusion.txt diff --git a/examples/ngram_lm/data/custom_confusion.txt b/examples/ngram_lm/data/custom_confusion.txt new file mode 100644 index 000000000..aecabf6aa --- /dev/null +++ b/examples/ngram_lm/data/custom_confusion.txt @@ -0,0 +1,1371 @@ +#变体 本体 本体词词频(可省略) +兴高彩列 兴高采烈 100 +吹唐人 吹糖人 100 +百年家具 百年家居 +泄药 泻药 +称做 称作 100 +化学成份 化学成分 100 +天地无垠 天地无限 100 +欲妄 欲望 +满头大汉 满头大汗 +一阙 一阕 300 +斗音 抖音 100 +人材 人才 100 +微亅信 微信 100 +微·信 微信 1000 +一毛不陪 一毛不赔 200 +无线大 无限大 1 +正加 增加 +相对得 相对地 +越来越底 越来越低 +个纾 个数 +曾加 增加 +情怳 情况 +持续的 持续地 +不断的 不断地 +成现 呈现 +家重 加重 +中国子 中国字 +计录 记录 +一落千仗 一落千丈 +婴而 婴儿 +负贵 富贵 +旁遍 旁边 +续承 继承 +约来越晚 越来越晚 +提共 提供 +行成 形成 +读哩 独立 +忙绿 忙碌 +年经人 年轻人 +智识 知识 +一但 一旦 +指摘 指责 +懹人民自己选择 让人民自己选择 +紧裤 辛苦 +放心地生活 放心的生活 +但靠一份收入 单靠一份收入 +多付出地几十倍 多付出的几十倍 +化钱 花钱 +依些 一些 +耐心的教育 耐心地教育 +多某些人来说 对某些人来说 +列子 例子 +普便 普遍 +单纯的说 单纯地说 +相对得坏处 相对的坏处 +改很多幼稚园 盖很多幼稚园 +不断的增加 不断地增加 +谈讨 探讨 +小还 小孩 +未普边 未普遍 +考良 考量 +过的不错 过得不错 +手医学治疗 受医学治疗 +数为至少四个人 数位至少四个人 +小子化 少子化 +间直 简直 +每办法 没办法 +青跨 情况 +最总 最终 +僱佣 僱用 +渐渐的形成 渐渐地形成 +渐渐的增加 渐渐地增加 +不断的改变 不断地改变 +不断的提高 不断地提高 +莫些年 某些年 +成工 成功 +线然 显然 +一长争段 一长争短 +在加上 再加上 +一后 以后 +自起 自己 +年轻得夫妇 年轻的夫妇 +真的事对 真的是对 +养小还 养小孩 +不彷 不妨 +疏缓 舒缓 +上叙 上述 +或着市 或者是 +学习地意愿 学习的意愿 +按部就班 按步就班 +全面的规划 全面地规划 +纾缓 舒缓 +年少气胜 年少气盛 +新家坡 新加坡 +变的很轻松 变得很轻松 +我门 我们 +月来越好 越来越好 +发生国 发生过 +以开发国家 已开发国家 +以开发 已开发 +赛翁失马 塞翁失马 +非常的宝贵 非常地宝贵 +列如 例如 +非常的珍贵 非常地珍贵 +二零五龄年 二零五零年 +証明 证明 +一间一间的关必 一间一间地关闭 +缠能收割 才能收割 +朗朗称道 琅琅称道 +缠能拯救 才能拯救 +付其责 负其责 +还而 孩儿 +自然而然的 自然而然地 +现再 现在 +一间一间的在建造 一间一间地在建造 +惰胎 堕胎 +给与 给予 +少字化 少子化 +狂大 广大 +至到 直到 +作些政策 做些政策 +想望 向往 +低免 抵免 +展生 产生 +源料 原料 +好好的准备 好好地准备 +庄况 状况 +因发 引发 +自记 自己 +桃论 讨论 +负单 负担 +而以 而已 +政符 政府 +邀情 邀请 +郑加 增加 +全心全力的 全心全力地 +进一份力 尽一份力 +不断的努力 不断地努力 +厉害关系 利害关系 +相像 现象 +题及 提及 +剥歇 剥削 +下起 下去 +了所学校 各所学校 +很好得一份工作 很好的一份工作 +来的这么快 来得这么快 +言前 眼前 +所担任的是有限 所担任的事有限 +放面 方面 +办发 办法 +有趣的说到 有趣地说到 +坚帧不移 坚贞不移 +心力绞碎 心力交瘁 +开发看经济 开发和经济 +有效的规划 有效地规划 +流守 留守 +生济 生计 +带欠缺 但欠缺 +堆动 推动 +表达的是 表达的事 +所以问题 所有问题 +由其固定的速度 有其固定的速度 +乐与减少 乐于减少 +变的困难 变得困难 +多馀 多于 +长远的看 长远地看 +血浓与水 血浓于水 +表面的看 表面地看 +推称出新 推陈出新 +脱离萍 脱离贫 +时间一天一天的过去 时间一天一天地过去 +提昌 提倡 +续多 许多 +现进 先进 +销费率 消费率 +直接的被感受 直接地被感受 +陪养 培养 +主在乡下 住在乡下 +弄多的很快 弄多得很快 +他门 他们 +持续的下降 持续地下降 +相对的减少 相对地减少 +相对的提高 相对地提高 +适当的生育 适当地生育 +成功的制定 成功地制定 +青少年门 青少年们 +慎重的希望 慎重地希望 +娇傲 骄傲 +亲爱的少年门 亲爱的少年们 +少子华 少子化 +生上 身上 +不断的鼓励 不断地鼓励 +具造 制造 +单初 当初 +发掌 发展 +大幅度的提升 大幅度地提升 +负担地因素 负担的因素 +亘多医疗费用 更多医疗费用 +餵了 为了 +照成 造成 +教育基精 教育基金 +装造性 创造性 +观察关 观察官 +怎么形成地 怎么形成的 +比年长者来的多 比年长者来得多 +不单 不但 +变的更良好 变得更良好 +变的更大 变得更大 +壤大众理解 让大众理解 +上免得分析 上面的分析 +已经再发生了 已经在发生了 +带来得危机 带来的危机 +恶讯循环 恶性循环 +他得生活费 他的生活费 +以开发地区 已开发地区 +长其 长期 +经额 金额 +在过几十年 再过几十年 +作为探讨 做为探讨 +系根据 是根据 +位于 为于 +份公司 分公司 +要作塑胶袋 要做塑胶袋 +还不过 还不够 +逃战 挑战 +再服务业 在服务业 +招莫 招募 +坐者 坐着 +仔细的观察 仔细地观察 +三个凑皮匠 三个臭皮匠 +个中各样 各种各样 +不啻 不是 +即史 即使 +岂有此里 岂有此理 +组宠物的人 租宠物的人 +浅溥 浅薄 +处里 处理 +他们得不负责任的态度 他们的不负责任的态度 +出租得事 出租的事 +这样以来 这样一来 +题高 提高 +厌力 压力 +事情阿 事情啊 +又意思 有意思 +建慷 健康 +真恭喜妳阿 真恭喜妳啊 +抱见阿 抱歉啊 +幸苦 辛苦 +参家 参加 +回来台湾 会来台湾 +生体 身体 +总视 总是 +一把很大的化 一把很大的花 +出你 祝你 +高心 高兴 +应为 因为 +洗碗 希望 +那理 那里 +根她坐公共汽车 跟她坐公共汽车 +公克 功课 +根林美美去 跟林美美去 +一前 以前 +傍边 旁边 +总明 聪明 +最难得课 最难的课 +在马上去 再马上去 +建在 现在 +事等我女朋友的 是等我女朋友的 +客爱 可爱 +象片 相片 +也雪 也许 +录的 绿的 +纲来 刚来 +让后 然后 +真得是坏人 真的是坏人 +提以 提议 +大的家 他的家 +从是 总是 +有处 有趣 +课目 科目 +看得是美国电影 看的是美国电影 +兴奋得 兴奋地 +控的时间 空的时间 +内容懂不清楚 内容都不清楚 +谊起 一起 +打公车 搭公车 +近去 进去 +林美妹 林美美 +唷意思 有意思 +蔘加 参加 +再开一个好把 再开一个好吧 +兴起不好 心情不好 +庆祝地会 庆祝的会 +漂漂亮亮地风景 漂漂亮亮的风景 +再庆祝一次把 再庆祝一次吧 +找的时间 找个时间 +间妈妈 见妈妈 +无会 舞会 +解我的朋友 请我的朋友 +日字 日子 +但然 当然 +障爱文 张爱文 +已定 一定 +澳是 要是 +长爱文 张爱文 +理物 礼物 +延后 然后 +合问她 和问她 +恨高兴 很高兴 +一让 一样 +帮别的学生的芒 帮别的学生的忙 +沾着 站着 +怒朋友 女朋友 +下明 小明 +老师文学生 老师问学生 +他清她吃饭 他请她吃饭 +还没作 还没做 +座公车 坐公车 +打篹 打算 +沾起来 站起来 +再起床呢 在起床呢 +再黑板写的东西 在黑板写的东西 +不输服 不舒服 +很哩 很累 +警张 紧张 +劳天 聊天 +很来 很累 +多要 都要 +奴朋友 女朋友 +高兴的不得了 高兴得不得了 +里学校很近 离学校很近 +音龠 音乐 +合唱父系语法 和常复习语法 +税觉 睡觉 +觉得贰 觉得饿 +对不气 对不起 +情你去吃饭 请你去吃饭 +不局道 不知道 +你好马 你好吗 +岑么样 怎么样 +可以马 可以吗 +我想情你 我想请你 +火者站 火车站 +聊体 聊天 +最前的子 最前的字 +座捷运 坐捷运 +哪哩 哪里 +十只路口 十字路口 +不智道 不知道 +怎门办 怎么办 +点视机 电视机 +已后 以后 +妳会时后 妳回时候 +漂凉 漂亮 +票凉 漂亮 +又漂亮的衣服 有漂亮的衣服 +清卖给我 请买给我 +红虹 红红 +待你的国家 到你的国家 +太样兵 太阳饼 +不拘导 不知道 +不咀导 不知道 +这哩 这里 +成市 城市 +发山 爬山 +风镜 风景 +他杏林 他姓林 +痕累 很累 +方假 放假 +风京 风景 +座火车 坐火车 +他的华 他的话 +户然 忽然 +理面 里面 +做回去 坐回去 +出们 出门 +愿赖 原来 +吧手 把手 +厅路上 听路上 +定车 停车 +高现 高兴 +排照 拍照 +他的婉 他的腕 +原意 愿意 +没人琣他 没人陪他 +歹去 带去 +自即 自己 +开是 开始 +和一点饮料 喝一点饮料 +录行 旅行 +谈着谈者 谈着谈着 +漂亮的术 漂亮的树 +戴我 载我 +作天 昨天 +很日 很热 +照篇 照片 +我借你们 我接你们 +握着我的朋友 我找我的朋友 +台配种战 台北总站 +来我的家完 来我的家玩 +营为 因为 +她门 她们 +些日会 生日会 +右遍 右边 +开时 开始 +做八八的公车 坐八八的公车 +对们 对门 +学玩了 学完了 +票漂亮亮 漂漂亮亮 +喜暗 喜欢 +括大风 刮大风 +批具 啤酒 +骠了 漂亮 +瞅天 秋天 +难德 南德 +不太施 不太湿 +冬天件 冬天间 +愁天 秋天 +塞太阳 晒太阳 +跟美 很美 +单让 当然 +感在 改在 +有孔 有空 +吃葚么 吃什么 +西欢 喜欢 +泰泰 太太 +词反 吃饭 +其末考 期末考 +台湾采 台湾菜 +他们的采 他们的菜 +设么 什么 +共喜 恭喜 +日本蔡 日本菜 +餐订 餐厅 +公课 功课 +大们口 大门口 +有没有控 有没有空 +刘信 留信 +六根礼拜日 六跟礼拜日 +永敢 勇敢 +辛亏 幸亏 +估停站 古亭站 +异子 椅子 +胡涂 糊涂 +真巧呕 真巧喔 +奴生 女生 +好朋有 好朋友 +莫斯汉堡 摩斯汉堡 +不可望 不可忘 +中文壳 中文课 +棒他 帮他 +怎嚜走 怎么走 +吃凉 吃惊 +冈来 刚来 +勇敢得 勇敢地 +风友 朋友 +走天 昨天 +湖涂 糊涂 +怎嚜 怎么 +真得 值得 +哪理 哪里 +票亮 漂亮 +又高又受 又高又瘦 +化了半个小时 花了半个小时 +杆快 赶快 +学习的很愉快 学习得很愉快 +怎吗 怎么 +十子路口 十字路口 +开方 开放 +息缓 喜欢 +交相机 照相机 +请办我 请帮我 +爬上 爬山 +录色 绿色 +各我妈妈 给我妈妈 +交马上停车 叫马上停车 +米了 迷了 +交到了 就到了 +号吗 号码 +很葬 很脏 +换给 还给 +清流 请留 +名子 名字 +把输给弄丢 把书给弄丢 +播爱 博爱 +大搂 大楼 +逃论室 讨论室 +坻里 地理 +奇给我 寄给我 +座飞机 坐飞机 +再机场 在机场 +便很帅 变很帅 +腾她 等她 +路行 旅行 +梅天 每天 +她九打电话 她就打电话 +美邦法 没办法 +不好以时 不好意思 +有疑点藤 有一点疼 +里拜四 礼拜四 +李佬时 李老师 +工课 功课 +身提 身体 +可使 可是 +靠事 考试 +重要得东西 重要的东西 +寮解 了解 +情你 请你 +而截 而且 +昭显机 照相机 +够猫 狗猫 +最有名的采 最有名的菜 +波澜 波兰 +西办加话 西班牙话 +东四 东西 +台弯 台湾 +学子 学字 +银董 运动 +而接 而且 +有控 有空 +陆行 旅行 +忍识 认识 +式式看 试试看 +拨兰 波兰 +一支狗 一只狗 +管哩 管理 +将学金 奖学金 +再波兰 在波兰 +下了可 下了课 +回越南得时候 回越南的时候 +台湾得风景 台湾的风景 +朋有 朋友 +气个月 七个月 +从德国莱 从德国来 +文花 文化 +吃部下 吃不下 +清假 请假 +烤试 考试 +血绿 血缘 +我票告诉您 我要告诉您 +候天 后天 +惜来看 借来看 +上果 上课 +吗吗 妈妈 +师什么公车 是什么公车 +岗来 刚来 +挑了 跳了 +座716号的公车 坐716号的公车 +三十分锺 三十分钟 +七点锺 七点钟 +公车佔 公车站 +邓的时候 等的时候 +依服 衣服 +睡过偷 睡过头 +佑对 有对 +乎很大的吸 呼很大的吸 +一整天水乐 一整天睡了 +等以等 等一等 +只有妳 只有你 +可况 何况 +学姣 学校 +跳无 跳舞 +恨情张 很紧张 +恨票亮 很漂亮 +俩个 两个 +悾怕 恐怕 +北老师骂他 怕老师骂他 +十五分种 十五分钟 +必较多 比较多 +睡过头把 睡过头吧 +我要座得巴士 我要坐的巴士 +来不起 来不及 +才陪吵醒 才被吵醒 +撘公车 搭公车 +眼靓 眼睛 +台我无聊 太过无聊 +大明哏他朋友 大明跟他朋友 +跳五 跳舞 +30份钟 30分钟 +座呢个公车 坐那个公车 +热恼 热闹 +手摽 手表 +苏嘉 暑假 +不好亿思 不好意思 +怎么杨 怎么样 +妳怎么了 你怎么了 +没有控 没有空 +根冒 感冒 +卧是李 我是李 +即然 既然 +台杯 台北 +里拜 礼拜 +希冠 希望 +开兴 开心 +烤师 考试 +热心的不得了 热心得不得了 +结昏 结婚 +边请卡 邀请卡 +注在 住在 +密鲁 秘鲁 +过的很开心 过得很开心 +寰麟 婚礼 +我回想妳们 我会想你们 +绍待卡 招待卡 +妳们 你们 +幸福快乐的过 幸福快乐地过 +公司排我 公司派我 +常不一样 穿不一样 +做二九七的公车 坐二九七的公车 +几希 继续 +今天得计画 今天的计画 +开心得 开心地 +钟就 终究 +共车 公车 +兔然 突然 +林雨 淋雨 +做公车 坐公车 +好好地经验 好好的经验 +涂然 突然 +讨润以下 讨论一下 +去万 去玩 +高兴得 高兴地 +考食物 烤食物 +在考 在烤 +美里 美丽 +交他的朋友 教他的朋友 +休葸 休息 +拟越来越漂亮 妳越来越漂亮 +对阿 对啊 +一扁吃 一边吃 +高高兴兴的 高高兴兴地 +修系 休息 +搜已 所以 +早藏 早上 +玩的横高兴 玩得很高兴 +做神马 做什么 +努生 女生 +高行 高兴 +一点鹅 一点饿 +点蔡 点菜 +交弮 交卷 +贵定 规定 +公作 工作 +炽爱 挚爱 +系望 希望 +你道德地旁 你到的地方 +除去完 出去玩 +里拜天 礼拜天 +暱友打算 你有打算 +新家波 新加坡 +考利以下 考虑一下 +一起去把 一起去吧 +寄怪 奇怪 +休息一点 休息一天 +我要会我的国家 我要回我的国家 +四班牙 西班牙 +完五月 玩五月 +踏青我们 他请我们 +是天两夜 四天两夜 +忆起去 一起去 +好久没间 好久没见 +放便 方便 +玩着玩者 玩着玩着 +裁板 裁判 +清等我 请等我 +座一下 坐一下 +请座 请坐 +板球 棒球 +测天 这天 +馔衣服 穿衣服 +情坐 请坐 +经张 紧张 +辕动比赛 运动比赛 +埤酒 啤酒 +看般球 看棒球 +餲得不得了 渴得不得了 +絣干 饼干 +形像代言人 形象代言人 +化夏子孙 华夏子孙 +华为泡影 化为泡影 +秘密歪斜 秘密外泄 +计画 计划 +忠于等到了 终于等到了 +未日来临 末日来临 +眼晴 眼睛 +游刀有余 游刃有余 +唐僧帅徒 唐僧师徒 +太概 大概 +一揽子货币 一篮子货币 +举足无措 手足无措 +凭藉 凭借 +令人發指 令人髮指 +绅仕 绅士 +粘豆包 黏豆包 +磬竹难书 罄竹难书 +严惩不怠 严惩不贷 +戮力同心 勠力同心 +罚角球 发角球 +综合症 综合征 +单独二胎 单独二孩 +蛰人 蜇人 +泄秘 泄密 +伏法 服法 +羊羯子 羊蝎子 +泻湖 潟湖 +家俱 家具 +精萃 精粹 +兴亡周期率 兴亡周期律 +震憾 震撼 +中华人名共和国 中华人民共和国 +大人常委会 人大常委会 +中国共产常 中国共产党 +科学发展现 科学发展观 +扶贪 扶贫 +严谨公款吃喝 严禁公款吃喝 +按纳 按捺 +案语 按语 +百废具兴 百废俱兴 +百页窗 百叶窗 +班白 斑白 +颁白 斑白 +班驳 斑驳 +胞子 孢子 +保镳 保镖 +保母 保姆 +褓姆 保姆 +辈份 辈分 +本份 本分 +笔划 笔画 +必恭必敬 毕恭毕敬 +编者案 编者按 +萹豆 扁豆 +稨豆 扁豆 +藊豆 扁豆 +标识 标志 +鬓脚 鬓角 +禀承 秉承 +补靪 补丁 +补钉 补丁 +参预 参与 +惨澹 惨淡 +差迟 差池 +搀和 掺和 +搀假 掺假 +搀杂 掺杂 +刬除 铲除 +倘佯 徜徉 +车箱 车厢 +澈底 彻底 +沈思 沉思 +趁心 称心 +成份 成分 +澄彻 澄澈 +侈糜 侈靡 +筹画 筹划 +筹马 筹码 +踌蹰 踌躇 +出谋画策 出谋划策 +喘嘘嘘 喘吁吁 +磁器 瓷器 +赐与 赐予 +粗卤 粗鲁 +搭当 搭档 +搭挡 搭档 +搭赸 搭讪 +答讪 搭讪 +答覆 答复 +带孝 戴孝 +耽心 担心 +耽忧 担忧 +担搁 耽搁 +澹泊 淡泊 +澹然 淡然 +倒楣 倒霉 +低徊 低回 +雕敝 凋敝 +雕弊 凋敝 +雕零 凋零 +雕落 凋落 +雕谢 凋谢 +跌荡 跌宕 +跌交 跌跤 +蹀血 喋血 +丁宁 叮咛 +定单 订单 +定户 订户 +定婚 订婚 +定货 订货 +定阅 订阅 +枓拱 斗拱 +枓栱 斗拱 +逗遛 逗留 +斗趣儿 逗趣儿 +独脚戏 独角戏 +端五 端午 +二簧 二黄 +贰心 二心 +发人深醒 发人深省 +蕃衍 繁衍 +分付 吩咐 +份量 分量 +份内 分内 +份外 分外 +忿忿 愤愤 +丰富多采 丰富多彩 +疯瘫 风瘫 +疯颠 疯癫 +疯疯颠颠 疯疯癫癫 +锋铓 锋芒 +伏侍 服侍 +服事 服侍 +伏输 服输 +伏罪 服罪 +负嵎顽抗 负隅顽抗 +傅会 附会 +覆信 复信 +复辙 覆辙 +干与 干预 +告戒 告诫 +梗直 耿直 +鲠直 耿直 +恭惟 恭维 +勾划 勾画 +勾联 勾连 +孤苦零丁 孤苦伶仃 +孤负 辜负 +骨董 古董 +股分 股份 +骨瘦如豺 骨瘦如柴 +关连 关联 +光采 光彩 +归根结柢 归根结底 +规戒 规诫 +鬼哭狼嗥 鬼哭狼嚎 +过份 过分 +虾蟆 蛤蟆 +含胡 含糊 +涵蓄 含蓄 +寒伧 寒碜 +喝采 喝彩 +喝倒采 喝倒彩 +哄动 轰动 +宏扬 弘扬 +红通通 红彤彤 +弘论 宏论 +弘图 宏图 +鸿图 宏图 +弘愿 宏愿 +弘旨 宏旨 +鸿福 洪福 +胡臭 狐臭 +胡蝶 蝴蝶 +胡涂 糊涂 +虎魄 琥珀 +花着 花招 +豁拳 划拳 +搳拳 划拳 +恍忽 恍惚 +晖映 辉映 +混水摸鱼 浑水摸鱼 +火伴 伙伴 +机伶 机灵 +激忿 激愤 +计画 计划 +记念 纪念 +寄与 寄予 +茄克 夹克 +佳宾 嘉宾 +驾御 驾驭 +架式 架势 +嫁装 嫁妆 +简炼 简练 +骄奢淫佚 骄奢淫逸 +脚门 角门 +狡滑 狡猾 +脚根 脚跟 +叫化子 叫花子 +精采 精彩 +鸠合 纠合 +鸠集 纠集 +脚色 角色 +刻期 克期 +刻日 克日 +刻划 刻画 +阔老 阔佬 +蓝缕 褴褛 +烂缦 烂漫 +烂熳 烂漫 +狼籍 狼藉 +狼头 榔头 +累坠 累赘 +黎黑 黧黑 +联贯 连贯 +联接 连接 +联绵 连绵 +联缀 连缀 +连袂 联袂 +连翩 联翩 +踉蹡 踉跄 +嘹喨 嘹亮 +撩乱 缭乱 +零丁 伶仃 +囹圉 囹圄 +蹓跶 溜达 +留连 流连 +喽罗 喽啰 +卤莽 鲁莽 +录象 录像 +录相 录像 +落腮胡子 络腮胡子 +落漠 落寞 +落莫 落寞 +痲痹 麻痹 +痲风 麻风 +痲疹 麻疹 +蚂蜂 马蜂 +马糊 马虎 +门坎 门槛 +糜费 靡费 +绵联 绵连 +摹仿 模仿 +模胡 模糊 +摹拟 模拟 +模写 摹写 +磨擦 摩擦 +磨拳擦掌 摩拳擦掌 +魔难 磨难 +眽眽 脉脉 +谋画 谋划 +那末 那么 +内哄 内讧 +凝炼 凝练 +牛崽裤 牛仔裤 +钮扣 纽扣 +掱手 扒手 +蟠根错节 盘根错节 +盘据 盘踞 +蟠踞 盘踞 +蟠据 盘踞 +蟠曲 盘曲 +盘陁 盘陀 +盘石 磐石 +蟠石 磐石 +盘跚 蹒跚 +旁皇 彷徨 +披星带月 披星戴月 +疲塌 疲沓 +飘泊 漂泊 +飘流 漂流 +漂零 飘零 +飘飖 飘摇 +平空 凭空 +牵联 牵连 +蕉萃 憔悴 +清彻 清澈 +情素 情愫 +惓惓 拳拳 +劝戒 劝诫 +热呼呼 热乎乎 +热呼 热乎 +热中 热衷 +人材 人才 +日蚀 日食 +入坐 入座 +色采 色彩 +杀一警百 杀一儆百 +沙鱼 鲨鱼 +山查 山楂 +舢舨 舢板 +梢公 艄公 +奢糜 奢靡 +伸雪 申雪 +神彩 神采 +湿渌渌 湿漉漉 +十锦 什锦 +收伏 收服 +首坐 首座 +书柬 书简 +思惟 思维 +死心踏地 死心塌地 +塌实 踏实 +菾菜 甜菜 +挺而走险 铤而走险 +透澈 透彻 +图象 图像 +推委 推诿 +玩艺儿 玩意儿 +委过 诿过 +污七八糟 乌七八糟 +无动于中 无动于衷 +无宁 毋宁 +无庸 毋庸 +五采缤纷 五彩缤纷 +五痨七伤 五劳七伤 +瘜肉 息肉 +希罕 稀罕 +希奇 稀奇 +希少 稀少 +希世 稀世 +希有 稀有 +噏动 翕动 +洗炼 洗练 +贤慧 贤惠 +香纯 香醇 +香菰 香菇 +像貌 相貌 +萧洒 潇洒 +小题大作 小题大做 +卸傤 卸载 +信口开合 信口开河 +惺松 惺忪 +秀外惠中 秀外慧中 +叙文 序文 +叙言 序言 +训戒 训诫 +压伏 压服 +压韵 押韵 +雅片 鸦片 +洋琴 扬琴 +要末 要么 +夜消 夜宵 +一槌定音 一锤定音 +一古脑儿 一股脑儿 +衣衿 衣襟 +衣著 衣着 +义无返顾 义无反顾 +霪雨 淫雨 +赢余 盈余 +影象 影像 +余辉 余晖 +鱼具 渔具 +鱼网 渔网 +预会 与会 +预闻 与闻 +御手 驭手 +豫备 预备 +元来 原来 +元煤 原煤 +源源本本 原原本本 +元元本本 原原本本 +原故 缘故 +原由 缘由 +月蚀 月食 +月芽 月牙 +云豆 芸豆 +杂遝 杂沓 +再接再砺 再接再厉 +斩新 崭新 +展转 辗转 +颤栗 战栗 +帐本 账本 +折衷 折中 +这末 这么 +正经八摆 正经八百 +脂麻 芝麻 +支解 肢解 +枝解 肢解 +直捷了当 直截了当 +直接了当 直截了当 +指手划脚 指手画脚 +赒济 周济 +转游 转悠 +装璜 装潢 +姿式 姿势 +子细 仔细 +自各儿 自个儿 +左证 佐证 +安份守己 安分守己 +暗度陈仓 暗渡陈仓 +把势 把式 +班配 般配 +棒锤 棒槌 +棒棰 棒槌 +暴光 曝光 +报导 报道 +悲忿 悲愤 +背理 悖理 +比画 比划 +笔心 笔芯 +荜路蓝缕 筚路蓝缕 +辨白 辩白 +辩辞 辩词 +波浪鼓 拨浪鼓 +泼浪鼓 拨浪鼓 +部份 部分 +菜子 菜籽 +仓惶 仓皇 +仓黄 仓皇 +仓遑 仓皇 +策画 策划 +常年累月 长年累月 +唱工 唱功 +潮呼呼 潮乎乎 +潮忽忽 潮乎乎 +撤消 撤销 +承上起下 承上启下 +吃里扒外 吃里爬外 +踟躇 踟蹰 +串连 串联 +辞汇 词汇 +词令 辞令 +搭拉 耷拉 +答理 搭理 +哒哒 嗒嗒 +搭裢 褡裢 +搭连 褡裢 +褡连 褡裢 +褡联 褡裢 +打冷颤 打冷战 +大放厥辞 大放厥词 +铛铛 当当 +当做 当作 +捣腾 倒腾 +悼辞 悼词 +得意扬扬 得意洋洋 +灯心 灯芯 +滴里嘟噜 嘀里嘟噜 +掉包 调包 +钉梢 盯梢 +丢三拉四 丢三落四 +掉换 调换 +东不拉 冬不拉 +遁辞 遁词 +哆唆 哆嗦 +峨嵋山 峨眉山 +发楞 发愣 +翻然醒悟 幡然醒悟 +反覆 反复 +忿恨 愤恨 +忿怒 愤怒 +夫倡妇随 夫唱妇随 +浮图 浮屠 +辐凑 辐辏 +福份 福分 +俯首贴耳 俯首帖耳 +赋与 赋予 +夹肢窝 胳肢窝 +格登 咯噔 +根柢 根底 +梗咽 哽咽 +宫庭 宫廷 +钩勒 勾勒 +勾针 钩针 +够戗 够呛 +孤另另 孤零零 +孤伶伶 孤零零 +轱轳 轱辘 +毂辘 轱辘 +固步自封 故步自封 +故技 故伎 +锢疾 痼疾 +固疾 痼疾 +刮刮叫 呱呱叫 +呵腰 哈腰 +寒颤 寒战 +嚎啕 号啕 +号咷 号啕 +嚎咷 号啕 +好高务远 好高骛远 +和事老 和事佬 +贺辞 贺词 +黑鼓隆咚 黑咕隆咚 +黑古龙冬 黑咕隆咚 +黑鸦鸦 黑压压 +轰堂大笑 哄堂大笑 +轰笑 哄笑 +宏亮 洪亮 +呼嗤 呼哧 +呼蚩 呼哧 +呼吃 呼哧 +花狸狐哨 花里胡哨 +花梢 花哨 +花稍 花哨 +花消 花销 +黄历 皇历 +混身 浑身 +浑沌 混沌 +辑逸 辑佚 +给与 给予 +记录片 纪录片 +记要 纪要 +趼子 茧子 +交待 交代 +脚鸭子 脚丫子 +脚指 脚趾 +叫真 较真 +菁华 精华 +警省 警醒 +酒钟 酒盅 +倔犟 倔强 +开消 开销 +砍大山 侃大山 +看做 看作 +夸大其辞 夸大其词 +宽洪大量 宽宏大量 +老趼 老茧 +乐和和 乐呵呵 +乐孜孜 乐滋滋 +利害 厉害 +伶牙利齿 伶牙俐齿 +流言飞语 流言蜚语 +蹓弯儿 遛弯儿 +乱烘烘 乱哄哄 +罗纹 螺纹 +慢道 漫道 +慢说 漫说 +毛骨耸然 毛骨悚然 +毛骨竦然 毛骨悚然 +冒然 贸然 +棉子 棉籽 +藐小 渺小 +渺视 藐视 +渺远 邈远 +溟溟 冥冥 +摸棱两可 模棱两可 +秣马利兵 秣马厉兵 +秣马砺兵 秣马厉兵 +木犀 木樨 +闹轰轰 闹哄哄 +闹烘烘 闹哄哄 +粘稠 黏稠 +粘糊 黏糊 +粘土 黏土 +粘性 黏性 +粘液 黏液 +念道 念叨 +暖呼呼 暖乎乎 +扒犁 爬犁 +判辞 判词 +皮簧 皮黄 +慓悍 剽悍 +飘渺 缥缈 +漂渺 缥缈 +飘眇 缥缈 +飘邈 缥缈 +凭白无故 平白无故 +匍伏 匍匐 +起程 启程 +启锚 起锚 +起迄 起讫 +气门心 气门芯 +牵就 迁就 +遣辞 遣词 +枪枝 枪支 +情份 情分 +屈伏 屈服 +取销 取消 +雀瘢 雀斑 +热剌剌 热辣辣 +如雷灌耳 如雷贯耳 +散逸 散佚 +沙锅 砂锅 +沙壶 砂壶 +沙浆 砂浆 +沙糖 砂糖 +杀风景 煞风景 +杀尾 煞尾 +刹时 霎时 +山颠 山巅 +扇风点火 煽风点火 +闪烁其辞 闪烁其词 +上方宝剑 尚方宝剑 +深醒 深省 +甚么 什么 +神甫 神父 +省分 省份 +拾遗补阙 拾遗补缺 +士女画 仕女画 +视阈 视域 +誓辞 誓词 +授与 授予 +摔交 摔跤 +水份 水分 +水长船高 水涨船高 +思辩 思辨 +死气白赖 死乞白赖 +宿愿 夙愿 +夙来 素来 +夙敌 宿敌 +夙儒 宿儒 +夙怨 宿怨 +梯己 体己 +题辞 题词 +俶傥 倜傥 +瞳人 瞳仁 +产玲 产龄 +退色 褪色 +托咐 托付 +顽耍 玩耍 +玩皮 顽皮 +惟独 唯独 +惟恐 唯恐 +惟利是图 唯利是图 +惟命是从 唯命是从 +惟其 唯其 +惟我独尊 唯我独尊 +惟一 唯一 +萎顿 委顿 +委宛 委婉 +委罪 诿罪 +委靡 萎靡 +委谢 萎谢 +文彩 文采 +无精打彩 无精打采 +无尚 无上 +欷歔 唏嘘 +喜孜孜 喜滋滋 +陷井 陷阱 +项练 项链 +销歇 消歇 +消魂 销魂 +兴高彩烈 兴高采烈 +雄纠纠 雄赳赳 +旋涡 漩涡 +薰陶 熏陶 +丫鬟 丫环 +压宝 押宝 +哑吧 哑巴 +哑叭 哑巴 +言不由中 言不由衷 +一倡百和 一唱百和 +一蹋糊涂 一塌糊涂 +一榻糊涂 一塌糊涂 +一相情愿 一厢情愿 +引伸 引申 +硬梆梆 硬邦邦 +硬帮帮 硬邦邦 +渔汛 鱼汛 +鱼鼓 渔鼓 +约莫 约摸 +殒落 陨落 +在坐 在座 +糟踏 糟蹋 +糟塌 糟蹋 +张惶 张皇 +照像 照相 +珍羞 珍馐 +真象 真相 +枝梧 支吾 +枝捂 支吾 +装聋做哑 装聋作哑 +妆束 装束 +装做 装作 +子畜 仔畜 +子猪 仔猪 +子粒 籽粒 +子棉 籽棉 +子实 籽实 +走露 走漏 +做弊 作弊 +做美 作美 +做弄 作弄 +做声 作声 +做秀 作秀 +座落 坐落 +坐次 座次 +坐位 座位 +旁证博引 旁征博引 +谈笑风声 谈笑风生 +美仑美幻 美轮美奂 +坐阵 坐镇 +不径而走 不胫而走 +飘亮 漂亮 +青纯 清纯 +体晾 体谅 +发杨广大 发扬光大 +浪废水 浪费水 +通货膨涨 通货膨胀 +迫不急待 迫不及待 +堵注 赌注 \ No newline at end of file diff --git a/examples/ngram_lm/data/text_correct.txt b/examples/ngram_lm/data/text_correct.txt new file mode 100644 index 000000000..ded8341bb --- /dev/null +++ b/examples/ngram_lm/data/text_correct.txt @@ -0,0 +1,220 @@ +少先队员因该为老人让坐 +祛痘印可以吗?有效果吗? +不知这款牛奶口感怎样? 小孩子喝行吗! +是转基因油? +我家宝宝13斤用多大码的 +会起坨吗? +请问给送上楼吗? +亲是送赁上门吗 +送货时候有外包装没有还是直接发货过来 +会不会有坏的? +这个米煮粥好还煮饭好吃 +有送的马克杯吗? +这纸尿裤分男孩女孩使用吗 +买的路由器老是断网,拔了跳过路由器就可以用了 +能泡开不?辣度几 +请问这个米蒸出来是一粒一粒的还是一坨一坨的? +水和其他商品一样送货上门,还是自提呀? +快两个月的孩子 要穿什么码的 +买回来会不会过期? +洗的还干净把吧 +路由器怎么样啊,掉线严重吗? +你好这米是五斤还是十斤 +收安费不 +给送开果器吗 +这纸好用吗?我看有不少的差评 +自用好用吗 +请问袜子穿久了会往下掉吗? +每一卷是独立包装的吗? +这个火龙果口味怎么样?甜不甜? +买这个送红杯吗? +一袋子多少斤 +这款拉拉裤有味道吗?超市买的没有味道,不知道这个怎么样 +我想问下拉拉裤上面那个贴的用来干嘛的,怎么用 +这里边有没有枣核 +玫瑰和薰衣草哪个好闻 +这个冰糖质量怎么样,有杂质吗 +倒水的时候漏吗 +请问大家,这个水壶烧出来的水有异味吗?因为给宝宝用所以很在意,谢谢大家 +这米煮出来糯吗? +这在款子好用吗?有香味吗? +到底是棉花的材质还是化纤的无纺布啊 求问? +我用360手机能充电几次 +亲这纸好用吗?值得买吗? +24瓶?还是12瓶 +是否是真的纸? +适用机洗吗? +好吃不好吃啊 +真的好用吗?我也想买  +你们拿到是什么版本的 +这水和超市一样吗?质量保证吗? +可以丢进马桶冲吗? +纸会不会粗? +这个翠的还不是不催的呀。。没有吃的那种不脆 +这个好用吗 +这纸有香味的吗? +是最近的生产日期吗 +赠品是什么呀 +这是两瓶还是一瓶的价格? +请问这是硬壳还是软壳? +亲,苹果收到后有坏的吗? +适合两人用吗 +这个直接喝好不好喝 还是要热一下 +纸有木有刺鼻气味? +酸不酸??? +这啤好渴吗? +跟安慕希哪个比较好喝? +好用么,主要是带宝宝出去玩的时候用的多? +刚出生的宝宝用什么码? +能当洗手液吗? +是不是很小包的那一种?50块有24包便宜的有点不敢相信 +好用吗,会不会起会不会起坨? +这个口可以直接放饮水机上用吗? +这种纸掉粉末吗 +手机好用吗?会卡吗 +开盖里面是拉环的吗? +这个电池真的需要一直换吗? +好用吗?是不是正品? +请问有尿显吗 +容易发烫吗 +苹果有腊吗 +这油有这么好吗?不是过期的吧 +这个夏天用会不会红屁股?透气性好吗 +你好。 我想问下这个是尿不湿吗 ? +这奶为啥这么便宜? +你们买的酱油会没有颜色吗,像水一样,看着都没胃口 +这个是机诜,还是手洗 +这个卫生巾带香味吗? +这种洗发水好用吗 +有餡嗎?好不好吃 +纸质不会好差吗? +亲们,此米是真空包装吗? +是软毛的吗?!! +请问大家德运牌子的好喝还是安佳的? +这纸好用吗,薄嘛 +这壶保温吗 +这个威露士货到了就是跟图片上的一样吗?只要是图片上显示的都有吗? +你们买的牛奶是最近日期吗 +这个除菌液,是单独放在滚筒洗衣机除菌液格,还是与洗衣液混合放在洗衣液格? +请问你们的三只松鼠寄回来的时候是用袋子装着的吗 +1kg是不是两斤? +洗衣皂怎么样啊,味道重吗,用之后好不好清洗啊。 +我要请问你这个是不是那个拉拉裤吗?这个花纹是不是拉拉裤? +好多人都说小米运动升级后手环就连不上了,你们有没有这种情况? +这部手机运行速度快不快? +新生儿可以用吗 抽一张会带出来很多张吗 +洗后有香味吗 +体验装有多少片 +银装怎么样?会漏尿吗?你们都是多久换一次的??(我家大概2-3个小时左右,宝宝醒一回换一次) +声音大吗?好用不? +抽纸有味吗 +苹果好吃吗?打过蜡吗?是不是坏的很多? +70g和80g得区别是啥? +袋装的和瓶装的洗衣液是一样的么? +噪音很大吗 +烧出来的水会不会很多一块一块的东西 +这个吹风真心好用吗?我今晚下单什么时候到 +请问各位宝妈 这个乳垫的背胶粘吗 +M号的你们给宝宝用到多大啊?几个月?我家宝宝3个月5㎏重,用花王的M号觉得小了。不知道这个怎么样? +这个喝了能找到女朋友吗 +这袜子耐不耐穿 +请问好用么 是正品么 +怎么储藏 我买了两天在常温阴凉处放着下层有些化了 需要放冰箱冷冻吗 +这批苏打水是否有股消毒水的味道? +质量怎么样,看到那么多差评,我不敢买了。 +会不会有烂的 +为什么我买的用完之后没香味 +甜吗???? +我看到评论里的差评说大米里有虫,是真的吗? +要放冰箱冷藏吗 +好不好吃啊 +这油怎么样 炒菜香不香 +这纸擦手时有屑吗? +是正品的吗? +好用吗 +这个特浓的苦不苦 +这个好用吗? +米里真的有虫吗 +是金装的吗? +双内胆有什么区别,两个一样的吗? +请问这款水可以降尿酸吗? +好用吗这个 +购物袋结实吗,能放重东西吗 +你好,请问这款可以剃头发刮光头吗 +这个纸巾质量如何?好用吗? +好用吗?小孩子喜欢吗? +亲。煮面时会糊锅不 +包邮吗运费多少 +会一抽就两三张一起抽起来吗? +一箱几桶油呀 +这个吹风机分冷风和热风吗 +发什么快递呢 +请问一下,有些枸杞说是不要洗,你们的是否建议洗呢? +请问纸有异味吗?我以前买过一箱就是这个居然有异味。 +这是6个么 怎么觉得有好多 +我买的荣耀10横滑home键进入后台这个操作成功率特别低,你们也是这样吗? +你们的有塑料味吗,机械的 +小米路由器真心说的有这么差吗 +请问大家这款刮的干净吗?谢谢 +会有塑料味吗 +质量真的很差吗?不敢买 +这纸有气味吗 +我买两箱怎么要运费 +这个标准果好吃吗,酸不酸 +稀吗?是不是有种兑了水的感觉? +威露士和滴露的消毒液哪个更好用呢? +曰期是几月份的 +手机容易折弯吗? +我家宝宝25斤XL会紧吗? +这款200克一箱的纸张和10卷手提的价格相差那么多 质量一样吗? +豆浆可以打吗 +电量有百分比吗 +用快递送过来瓶子会不会打破 +是三相电吗,有空调摇控器吧 +拿它送人,有问题吗?? +安幕希好喝吗? +这款纸尿裤好用吗?和尤妮佳比较哪个好用些? +2层厚吗?是不是一到水就烂了 +为什么我宝宝拉粑粑后面总是漏出来我已经贴的很牢了,10斤的宝宝用S号也不小啊你们用了没这种情况吗? +这个产品好用吗? +刷毛柔软度咋样,这么便宜,会不会是很小个的 +会不会有过敏的情况呀 +请问是辣条吗 +这种米只能煮粥不能煮饭吗 +可以开袋即食吗? +这米好吃吗? +这个充电宝充满电需要多久 +这个奶开了可以保质喝两天吗 +这种薰衣草的洗衣液怎么样 +你们的小米六边框掉漆了吗??? +这个是机洗用还是手洗用的啊 +厚度怎么样、起球吗感谢大哥大姐们 +这个好喝还是康师傅红茶好喝 +这种洁面膏会不会过敏,我上次用的火山岩冰感洁面啫喱对那种过敏,但听别人说那种稀的本来就特别容易过敏,不知道这种洁面膏会不会过敏! +这杯那么多差评,是真的吗,吓得我都不敢买了 +枣是免洗的吗? +这个尿不湿尿过会起坨吗 +感觉和苏菲比哪个更好用呢? +煮出来的饭香吗? +你好!请问这个水壶烧水开了是自动切电吗? +这个跟 原木纯品 那个啥区别?不是原木纸浆做的? +能放冰箱吗 +纸有味道吗? +2016全国高考卷答题模板 +2016全国大考卷答题模板 +2016全国低考卷答题模板 +床前明月光,疑是地上霜 +床前星星光,疑是地上霜 +床前白月光,疑是地上霜 +落霞与孤鹜齐飞,秋水共长天一色 +落霞与孤鹜齐跑,秋水共长天一色 +落霞与孤鹜双飞,秋水共长天一色 +众里寻他千百度,蓦然回首,那人却在,灯火阑珊处 +众里寻她千百度,蓦然回首,那人却在,灯火阑珊处 +众里寻ta千百度,蓦然回首,那人却在,灯火阑珊处 +吸烟的人容*得癌症 +就只听着我*妈所说的话, +就接受环境污*用化肥和农药, +是或者接受环境污染用化肥和农药, +现在的香港比从前的*荣很多。 +现在的香港比*前的饭荣很多。 diff --git a/examples/ngram_lm/local/build_zh_lm.sh b/examples/ngram_lm/local/build_zh_lm.sh new file mode 100644 index 000000000..a2708e194 --- /dev/null +++ b/examples/ngram_lm/local/build_zh_lm.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +stage=0 +stop_stage=100 + +order=5 +mem=80% +prune=0 +a=22 +q=8 +b=8 + +source ${MAIN_ROOT}/utils/parse_options.sh || exit 1; + +if [ $# != 3 ]; then + echo "$0 token_type exp/text exp/text.arpa" + echo $@ + exit 1 +fi + +# char or word +type=$1 +text=$2 +arpa=$3 + +if [ $stage -le 0 ] && [ $stop_stage -ge 0 ];then + # text tn & wordseg preprocess + echo "process text." + python3 local/zh_preprocess.py ${type} ${text} ${text}.${type}.tn +fi + +if [ $stage -le 1 ] && [ $stop_stage -ge 1 ];then + # train ngram lm + echo "build lm." + bash local/ngram_train.sh --order ${order} --mem ${mem} --prune "${prune}" ${text}.${type}.tn ${arpa} +fi \ No newline at end of file diff --git a/examples/ngram_lm/local/download_lm_zh.sh b/examples/ngram_lm/local/download_lm_zh.sh new file mode 100755 index 000000000..f9e2261fd --- /dev/null +++ b/examples/ngram_lm/local/download_lm_zh.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env bash + +. ${MAIN_ROOT}/utils/utility.sh + +DIR=data/lm +mkdir -p ${DIR} + +URL='https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm' +MD5="29e02312deb2e59b3c8686c7966d4fe3" +TARGET=${DIR}/zh_giga.no_cna_cmn.prune01244.klm + + +echo "Download language model ..." +download $URL $MD5 $TARGET +if [ $? -ne 0 ]; then + echo "Fail to download the language model!" + exit 1 +fi + + +exit 0 diff --git a/examples/ngram_lm/local/kenlm_score_test.py b/examples/ngram_lm/local/kenlm_score_test.py new file mode 100644 index 000000000..1c8f867bd --- /dev/null +++ b/examples/ngram_lm/local/kenlm_score_test.py @@ -0,0 +1,167 @@ +import kenlm +import jieba +import time + +import os +import sys + +language_model_path = sys.argv[1] +assert os.path.exists(language_model_path) + +start = time.time() +model = kenlm.Model(language_model_path) +print(f"load kenLM cost: {time.time() - start}s") + +sentence = '盘点不怕被税的海淘网站❗️海淘向来便宜又保真!' +sentence_char_split = ' '.join(list(sentence)) +sentence_word_split = ' '.join(jieba.lcut(sentence)) + + +def test_score(): + print('Loaded language model: %s' % language_model_path) + + print(sentence) + print(model.score(sentence)) + print(list(model.full_scores(sentence))) + for i, v in enumerate(model.full_scores(sentence)): + print(i, v) + + print(sentence_char_split) + print(model.score(sentence_char_split)) + print(list(model.full_scores(sentence_char_split))) + split_size = 0 + for i, v in enumerate(model.full_scores(sentence_char_split)): + print(i, v) + split_size += 1 + assert split_size == len(sentence_char_split.split()) + 1, "error split size." + + print(sentence_word_split) + print(model.score(sentence_word_split)) + print(list(model.full_scores(sentence_word_split))) + for i, v in enumerate(model.full_scores(sentence_word_split)): + print(i, v) + + +def test_full_scores_chars(): + print('Loaded language model: %s' % language_model_path) + print(sentence_char_split) + # Show scores and n-gram matches + words = [''] + list(sentence) + [''] + for i, (prob, length, oov) in enumerate(model.full_scores(sentence_char_split)): + print('{0} {1}: {2}'.format(prob, length, ' '.join(words[i + 2 - length:i + 2]))) + if oov: + print('\t"{0}" is an OOV'.format(words[i + 1])) + + print("-" * 42) + # Find out-of-vocabulary words + oov = [] + for w in words: + if w not in model: + print('"{0}" is an OOV'.format(w)) + oov.append(w) + assert oov == ["❗", "️", "!"], 'error oov' + + +def test_full_scores_words(): + print('Loaded language model: %s' % language_model_path) + print(sentence_word_split) + # Show scores and n-gram matches + words = [''] + sentence_word_split.split() + [''] + for i, (prob, length, oov) in enumerate(model.full_scores(sentence_word_split)): + print('{0} {1}: {2}'.format(prob, length, ' '.join(words[i + 2 - length:i + 2]))) + if oov: + print('\t"{0}" is an OOV'.format(words[i + 1])) + + print("-" * 42) + # Find out-of-vocabulary words + oov = [] + for w in words: + if w not in model: + print('"{0}" is an OOV'.format(w)) + oov.append(w) + # zh_giga.no_cna_cmn.prune01244.klm is chinese charactor LM + assert oov == ["盘点", "不怕", "网站", "❗", "️", "海淘", "向来", "便宜", "保真", "!"], 'error oov' + + +def test_full_scores_chars_length(): + """test bos eos size""" + print('Loaded language model: %s' % language_model_path) + r = list(model.full_scores(sentence_char_split)) + n = list(model.full_scores(sentence_char_split, bos=False, eos=False)) + print(r) + print(n) + assert len(r) == len(n) + 1 + + # bos=False, eos=False, input len == output len + print(len(n), len(sentence_char_split.split())) + assert len(n) == len(sentence_char_split.split()) + + k = list(model.full_scores(sentence_char_split, bos=False, eos=True)) + print(k, len(k)) + + +def test_ppl_sentence(): + """测试句子粒度的ppl得分""" + sentence_char_split1 = ' '.join('先救挨饿的人,然后治疗病人。') + sentence_char_split2 = ' '.join('先就挨饿的人,然后治疗病人。') + n = model.perplexity(sentence_char_split1) + print('1', n) + n = model.perplexity(sentence_char_split2) + print(n) + + part_char_split1 = ' '.join('先救挨饿的人') + part_char_split2 = ' '.join('先就挨饿的人') + n = model.perplexity(part_char_split1) + print('2', n) + n = model.perplexity(part_char_split2) + print(n) + + part_char_split1 = '先救挨' + part_char_split2 = '先就挨' + n1 = model.perplexity(part_char_split1) + print('3', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + assert n1 == n2 + + part_char_split1 = '先 救 挨' + part_char_split2 = '先 就 挨' + n1 = model.perplexity(part_char_split1) + print('4', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + + part_char_split1 = '先 救 挨 饿 的 人' + part_char_split2 = '先 就 挨 饿 的 人' + n1 = model.perplexity(part_char_split1) + print('5', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + + part_char_split1 = '先 救 挨 饿 的 人 ,' + part_char_split2 = '先 就 挨 饿 的 人 ,' + n1 = model.perplexity(part_char_split1) + print('6', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + + part_char_split1 = '先 救 挨 饿 的 人 , 然 后 治 疗 病 人' + part_char_split2 = '先 就 挨 饿 的 人 , 然 后 治 疗 病 人' + n1 = model.perplexity(part_char_split1) + print('7', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + + part_char_split1 = '先 救 挨 饿 的 人 , 然 后 治 疗 病 人 。' + part_char_split2 = '先 就 挨 饿 的 人 , 然 后 治 疗 病 人 。' + n1 = model.perplexity(part_char_split1) + print('8', n1) + n2 = model.perplexity(part_char_split2) + print(n2) + +if __name__ == '__main__': + test_score() + test_full_scores_chars() + test_full_scores_words() + test_full_scores_chars_length() + test_ppl_sentence() \ No newline at end of file diff --git a/examples/ngram_lm/local/ngram_train.sh b/examples/ngram_lm/local/ngram_train.sh new file mode 100644 index 000000000..cba74880f --- /dev/null +++ b/examples/ngram_lm/local/ngram_train.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +order=5 +mem=80% +prune=0 +a=22 +q=8 +b=8 + +source ${MAIN_ROOT}/utils/parse_options.sh || exit 1; + +if [ $# != 2 ]; then + echo "$0 exp/text exp/text.arpa" + exit 1 +fi + +text=${1} +arpa=${2} +lmbin=${2}.klm.bin + +# https://kheafield.com/code/kenlm/estimation/ +echo "build arpa lm." +lmplz -o ${order} -S ${mem} --prune ${prune} < ${text} >${arpa} || { echo "train kenlm error!"; exit -1; } + +# https://kheafield.com/code/kenlm/ +echo "build binary lm." +build_binary -a ${a} -q ${q} -b ${b} trie ${arpa} ${lmbin} || { echo "build kenlm binary error!"; exit -1; } \ No newline at end of file diff --git a/examples/ngram_lm/local/zh_preprocess.py b/examples/ngram_lm/local/zh_preprocess.py new file mode 100644 index 000000000..9cdcfd495 --- /dev/null +++ b/examples/ngram_lm/local/zh_preprocess.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +from typing import List, Text +import sys +import jieba +import string +import re +from zhon import hanzi + +def char_token(s: Text) -> List[Text]: + return list(s) + +def word_token(s: Text) -> List[Text]: + return jieba.lcut(s) + +def tn(s: Text) -> Text: + s = s.strip() + s = s.replace('*', '') + # rm english punctuations + s = re.sub(f'[re.escape(string.punctuation)]' , "", s) + # rm chinese punctuations + s = re.sub(f'[{hanzi.punctuation}]', "", s) + # text normalization + + # rm english + s = ''.join(re.findall(hanzi.sent, s)) + return s + +def main(infile, outfile, tokenizer=None): + with open(infile, 'rt') as fin, open(outfile, 'wt') as fout: + lines = fin.readlines() + for l in lines: + l = tn(l) + if tokenizer: + l = ' '.join(tokenizer(l)) + fout.write(l) + fout.write('\n') + +if __name__ == '__main__': + if len(sys.argv) != 4: + print(f"sys.arv[0] [char|word] text text_out ") + exit(-1) + + token_type = sys.argv[1] + text = sys.argv[2] + text_out = sys.argv[3] + + if token_type == 'char': + tokenizer = char_token + elif token_type == 'word': + tokenizer = word_token + else: + tokenizer = None + + main(text, text_out, tokenizer) \ No newline at end of file diff --git a/examples/ngram_lm/path.sh b/examples/ngram_lm/path.sh new file mode 100644 index 000000000..c07b11cf0 --- /dev/null +++ b/examples/ngram_lm/path.sh @@ -0,0 +1,13 @@ +export MAIN_ROOT=${PWD}/../../ + +export PATH=${MAIN_ROOT}:${PWD}/tools:${PATH} +export LC_ALL=C + +# Use UTF-8 in Python to avoid UnicodeDecodeError when LC_ALL=C +export PYTHONIOENCODING=UTF-8 +export PYTHONPATH=${MAIN_ROOT}:${PYTHONPATH} + +export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib/ + +MODEL=deepspeech2 +export BIN_DIR=${MAIN_ROOT}/deepspeech/exps/${MODEL}/bin diff --git a/examples/ngram_lm/requirements.txt b/examples/ngram_lm/requirements.txt new file mode 100644 index 000000000..523cd3e14 --- /dev/null +++ b/examples/ngram_lm/requirements.txt @@ -0,0 +1 @@ +jieba>=0.39 \ No newline at end of file diff --git a/examples/ngram_lm/run.sh b/examples/ngram_lm/run.sh new file mode 100755 index 000000000..4b507e95c --- /dev/null +++ b/examples/ngram_lm/run.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -e +source path.sh + +stage=0 +stop_stage=100 + +source ${MAIN_ROOT}/utils/parse_options.sh || exit -1 + +python3 -c 'import kenlm;' || { echo "kenlm package not install!"; exit -1; } + +if [ $stage -le 0 ] && [ $stop_stage -ge 0 ];then + # case 1, test kenlm + # download language model + bash local/download_lm_zh.sh + if [ $? -ne 0 ]; then + exit 1 + fi + + # test kenlm `score` and `full_score` + python local/kenlm_score_test.py data/lm/zh_giga.no_cna_cmn.prune01244.klm +fi + +mkdir -p exp +cp data/text_correct.txt exp/text + +if [ $stage -le 1 ] && [ $stop_stage -ge 1 ];then + # case 2, chinese chararctor ngram lm build + # output: xxx.arpa xxx.kenlm.bin + input=exp/text + token_type=char + lang=zh + order=5 + prune="0 1 2 4 4" + a=22 + q=8 + b=8 + output=${input}_${lang}_${token_type}_o${order}_p${prune// /_}_a${a}_q${q}_b${b}.arpa + echo "build ${token_type} lm." + bash local/build_zh_lm.sh --order ${order} --prune "${prune}" --a ${a} --q ${a} --b ${b} ${token_type} ${input} ${output} +fi + +if [ $stage -le 2 ] && [ $stop_stage -ge 2 ];then + # case 2, chinese chararctor ngram lm build + # output: xxx.arpa xxx.kenlm.bin + input=exp/text + token_type=word + lang=zh + order=3 + prune="0 0 0" + a=22 + q=8 + b=8 + output=${input}_${lang}_${token_type}_o${order}_p${prune// /_}_a${a}_q${q}_b${b}.arpa + echo "build ${token_type} lm." + bash local/build_zh_lm.sh --order ${order} --prune "${prune}" --a ${a} --q ${a} --b ${b} ${token_type} ${input} ${output} +fi