FST ITN-ZH部署指南:中文分数标准化实战
1. 简介与背景
中文逆文本标准化(Inverse Text Normalization, ITN)是语音识别、自然语言处理和智能对话系统中的关键预处理环节。其核心任务是将口语化或非标准表达的中文文本转换为结构清晰、格式统一的标准形式,例如将“一百二十三”转为“123”,或将“早上八点半”转为“8:30a.m.”。
FST ITN-ZH 是基于有限状态转导器(Finite State Transducer, FST)架构实现的高性能中文ITN工具,具备高精度、低延迟和可扩展性强等优势。本文重点介绍由开发者“科哥”完成的WebUI二次开发版本的部署流程、功能使用及工程优化建议,帮助用户快速构建本地化中文ITN服务。
本指南适用于希望在私有环境部署中文ITN系统的研发人员、AI工程师以及语音技术爱好者。
2. 系统部署与启动
2.1 部署准备
确保目标服务器满足以下基础环境要求:
- 操作系统:Linux(推荐 Ubuntu 18.04+ 或 CentOS 7+)
- Python 版本:3.8+
- 依赖管理:pip / conda
- 内存:≥ 4GB(建议8GB以上用于批量处理)
- 端口开放:7860(默认WebUI端口)
2.2 启动与重启指令
进入项目根目录后,执行以下命令启动服务:
/bin/bash /root/run.sh该脚本通常包含如下逻辑:
- 激活Python虚拟环境
- 安装缺失依赖(如
gradio,pynini等) - 加载FST模型并初始化服务
- 启动Gradio WebUI界面
提示:若修改了配置文件或更新模型,请务必重启服务以生效。
3. 功能详解与使用实践
3.1 访问WebUI界面
服务启动成功后,在浏览器中访问:
http://<服务器IP>:7860页面加载完成后,您将看到一个简洁美观的紫蓝渐变风格界面,标题为“中文逆文本标准化 (ITN)”,底部标注“webUI二次开发 by 科哥”。
运行截图说明
界面布局清晰,支持标签页切换、实时转换与示例填充,极大提升了交互体验。
3.2 功能一:单文本转换
使用步骤
- 打开页面,点击「📝 文本转换」标签页
- 在输入框中填写待转换的中文语句
- 点击「开始转换」按钮
- 查看输出框中的标准化结果
示例演示
输入: 二零零八年八月八日早上八点半 输出: 2008年08月08日 8:30a.m.此功能适合调试验证、小规模数据处理或集成测试。
3.3 功能二:批量文件转换
对于大规模数据处理场景,推荐使用批量转换功能。
操作流程
- 准备
.txt格式文件,每行一条原始文本 - 切换至「📦 批量转换」标签页
- 点击「上传文件」选择本地文本文件
- 点击「批量转换」触发处理流程
- 转换完成后自动提供下载链接
输入文件格式示例
二零零八年八月八日 一百二十三 早上八点半 一点二五元 二十五千克 京A一二三四五输出结果示例
2008年08月08日 123 8:30a.m. ¥1.25 25kg 京A12345注意:系统会保留原行顺序,便于后续对齐分析。
3.4 快速示例与一键填充
页面底部提供多个快捷示例按钮,涵盖常见类型:
| 按钮 | 输入示例 |
|---|---|
[日期] | 二零零八年八月八日 |
[时间] | 早上八点半 |
[数字] | 一百二十三 |
[货币] | 一点二五元 |
[分数] | 五分之一 |
[度量] | 二十五千克 |
[数学] | 负二 |
[车牌] | 京A一二三四五 |
[长文本] | 二零一九年九月十二日的晚上... |
点击任意按钮即可自动填入对应示例内容,方便快速测试各类转换能力。
4. 高级设置与参数调优
通过「高级设置」面板可精细控制转换行为,适应不同业务需求。
4.1 转换独立数字
- 开启效果:
幸运一百→幸运100 - 关闭效果:
幸运一百→幸运一百
适用于是否需要将嵌入式中文数字也进行转换的场景。
4.2 转换单个数字(0–9)
- 开启效果:
零和九→0和9 - 关闭效果:
零和九→零和九
常用于避免误改专有名词中的数字字符。
4.3 完全转换“万”
- 开启效果:
六百万→6000000 - 关闭效果:
六百万→600万
当需完全展开数量级时启用;否则保留“万”单位更符合阅读习惯。
5. 支持的转换类型详述
5.1 日期标准化
将汉字年月日转换为阿拉伯数字格式。
输入: 二零一九年九月十二日 输出: 2019年09月12日支持闰年、大小月自动校验。
5.2 时间表达归一化
区分上午/下午,并转换为标准时间格式。
输入: 下午三点十五分 输出: 3:15p.m.5.3 数字转换
支持整数、大数单位(十、百、千、万、亿)的完整解析。
输入: 一千九百八十四 输出: 19845.4 货币符号映射
自动识别币种并添加对应符号。
输入: 一点二五元 输出: ¥1.25 输入: 一百美元 输出: $1005.5 分数表示法
将“X分之Y”结构转换为数学分数形式。
输入: 五分之一 输出: 1/5 输入: 三分之二 输出: 2/35.6 度量单位简化
结合数值与国际单位缩写。
输入: 三十公里 输出: 30km5.7 数学表达式处理
支持正负号、小数点等科学记法。
输入: 负二 输出: -2 输入: 正五点五 输出: +5.55.8 车牌号码规范化
仅转换数字部分,保留地区代码与字母。
输入: 京A一二三四五 输出: 京A123456. 实用技巧与最佳实践
6.1 长文本多类型混合处理
系统支持在同一段落中识别并转换多种实体类型。
输入: 这件事发生在二零一九年九月十二日的晚上,大概八点半左右,涉及金额为一万二千元。 输出: 这件事发生在2019年09月12日的晚上,大概8:30左右,涉及金额为12000元。适用于日志清洗、会议记录整理等复杂文本场景。
6.2 大批量数据处理建议
针对超过千条的数据集,建议采用以下策略:
- 分批次上传(每批 ≤ 1000 行),防止内存溢出
- 使用带时间戳的命名规则保存结果文件
- 建立转换前后对照表用于质量评估
6.3 结果持久化存储
点击「保存到文件」按钮可将当前输出内容写入服务器磁盘,文件路径一般位于:
/output/result_YYYYMMDD_HHMMSS.txt便于后续归档或导入数据库。
7. 常见问题与解决方案
7.1 转换结果不准确?
- 检查输入格式:确认无错别字或非常规表达
- 调整高级设置:尝试关闭某些敏感选项(如单个数字转换)
- 反馈给开发者:通过微信联系科哥提交错误样例
7.2 是否支持方言或特殊读法?
目前支持以下三种主流表达方式:
- 简体数字:一、二、三
- 大写数字:壹、贰、叁(常用于财务场景)
- 口语变体:幺(一)、两(二)
暂不支持地方方言(如粤语发音)或网络俚语。
7.3 首次转换延迟较高?
首次请求需加载FST模型至内存,耗时约3–5秒。后续请求响应速度可达毫秒级。
建议保持服务常驻运行,避免频繁重启。
7.4 版权与使用声明
根据项目协议,必须保留以下版权信息:
webUI二次开发 by 科哥 | 微信:312088415 承诺永远开源使用 但是需要保留本人版权信息!违反者将失去继续使用的权利。
8. 界面操作与按钮说明
| 按钮 | 功能说明 |
|---|---|
| 开始转换 | 触发当前输入文本的标准化处理 |
| 清空 | 清除输入与输出区域内容 |
| 复制结果 | 将输出内容复制回输入框(便于连续编辑) |
| 保存到文件 | 将结果写入服务器临时文件 |
| 批量转换 | 处理上传的.txt文件并生成结果包 |
9. 技术支持与维护
如遇技术问题或有定制化需求,请联系:
- 开发者:科哥
- 联系方式:微信
312088415
欢迎提出功能建议、报告Bug或参与社区共建。
10. 许可证与开源声明
本项目遵循Apache License 2.0开源协议发布。
核心条款摘要:
- 允许商业使用、修改和分发
- 必须保留原始版权声明
- 不提供任何形式的担保
- 修改后的版本需明确标注变更内容
再次强调:请务必保留“webUI二次开发 by 科哥”相关信息。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。