中文逆文本标准化实战:FST ITN-ZH部署与使用全解析
1. 简介与背景
中文逆文本标准化(Inverse Text Normalization, ITN)是语音识别系统中不可或缺的一环。在自动语音识别(ASR)输出的文本中,数字、日期、时间等通常以口语化形式呈现,例如“二零零八年八月八日”或“早上八点半”。为了便于后续处理(如信息抽取、结构化存储),需要将这些表达转换为标准格式。
FST ITN-ZH 是一个基于有限状态转导器(Finite State Transducer, FST)实现的中文逆文本标准化工具,具备高精度、低延迟和可扩展性强的特点。本文介绍其 WebUI 二次开发版本——由“科哥”构建并优化的可视化部署方案,涵盖从环境配置到实际使用的完整流程。
本系统支持多种常见语义类别的转换,包括: - 数字(一百二十三 → 123) - 日期(二零一九年九月十二日 → 2019年09月12日) - 时间(早上八点半 → 8:30a.m.) - 货币(一点二五元 → ¥1.25) - 分数、度量单位、数学符号、车牌号等
该 WebUI 版本极大降低了使用门槛,适合非技术用户快速上手,也适用于企业级批量数据预处理场景。
2. 部署与启动
2.1 环境准备
本项目运行于 Linux 系统(推荐 Ubuntu 20.04+ 或 CentOS 7+),依赖以下基础组件: - Python 3.8+ - pip 包管理工具 - Bash shell 环境
确保服务器已安装 Docker(可选,用于隔离运行环境)。
2.2 启动或重启应用
进入项目根目录后,执行以下命令即可启动服务:
/bin/bash /root/run.sh此脚本会完成以下操作: 1. 检查 Python 环境及依赖包(如gradio,pynini等) 2. 加载 FST 模型文件 3. 启动 Gradio Web 服务,默认监听端口7860
提示:首次运行需下载模型权重并编译 FST 图,耗时约 3–5 秒;后续请求响应迅速。
2.3 访问 WebUI 界面
服务启动成功后,在浏览器中访问:
http://<服务器IP>:7860页面加载完成后,您将看到如下界面布局(参考截图):
界面采用紫蓝渐变标题栏设计,清晰标注“webUI二次开发 by 科哥”,体现开发者归属。
3. 核心功能详解
3.1 功能一:单文本转换
使用流程
- 打开 WebUI 页面
- 切换至「📝 文本转换」标签页
- 在输入框中键入待转换文本
- 点击「开始转换」按钮
- 查看输出结果
示例演示
输入: 二零零八年八月八日早上八点半 输出: 2008年08月08日 8:30a.m.系统能准确识别多个语义片段,并分别进行标准化处理。
技术原理简析
底层采用多层级 FST 构建规则网络: - 第一层:分词与词性标注 - 第二层:语义类别识别(DATE、TIME、CARDINAL 等) - 第三层:对应规则映射(如早上 + X点Y分 → X:Y a.m.)
所有规则均通过正则表达式与加权有限状态机组合实现,保证高效匹配与无歧义输出。
3.2 功能二:批量文本转换
对于大规模数据处理任务,提供「📦 批量转换」功能。
操作步骤
- 准备
.txt文件,每行一条原始文本 - 点击「上传文件」选择文件
- 点击「批量转换」触发处理
- 完成后点击「下载结果」获取标准化后的文本文件
输入文件示例
二零零八年八月八日 一百二十三 早上八点半 一点二五元 二十五千克 京A一二三四五输出结果示例
2008年08月08日 123 8:30a.m. ¥1.25 25kg 京A12345优势:支持万级文本一次性处理,内存占用可控,适合离线清洗任务。
4. 高级设置与参数调优
系统提供三项关键开关,允许用户根据业务需求灵活调整转换行为。
4.1 转换独立数字
- 开启效果:
幸运一百→幸运100 - 关闭效果:
幸运一百→幸运一百
适用于是否希望将嵌入式中文数字也进行替换的场景。若用于品牌名保护或文学文本处理,建议关闭。
4.2 转换单个数字 (0–9)
- 开启效果:
零和九→0和9 - 关闭效果:
零和九→零和九
控制是否对单字数字进行替换。某些口语对话系统可能更偏好保留原貌,此时应关闭此项。
4.3 完全转换'万'
- 开启效果:
六百万→6000000 - 关闭效果:
六百万→600万
决定是否展开“万”单位。金融报表生成常需完全数字化,而日常阅读保留“万”更易理解。
建议:根据下游任务选择模式。数据分析推荐开启,人机交互展示建议关闭。
5. 支持的转换类型详述
5.1 日期转换
支持年月日格式的完整转换,兼容大小写汉字:
输入: 二零一九年九月十二日 输出: 2019年09月12日 输入: 貳零貳肆年拾壹月壹日 输出: 2024年11月01日5.2 时间表达归一化
识别上午/下午、点、分、秒等关键词,统一为 12 小时制带 a.m./p.m. 标记:
输入: 下午三点十五分 输出: 3:15p.m. 输入: 半夜十二点整 输出: 12:00a.m.5.3 数字与计数
支持个、十、百、千、万、亿等量级词的解析:
输入: 一千九百八十四 输出: 1984 输入: 三万五千六百 输出: 35600(当“完全转换'万'”开启时)5.4 货币表示
自动添加货币符号,并按国际惯例格式化金额:
输入: 一点二五元 输出: ¥1.25 输入: 一百美元 输出: $1005.5 分数与比例
将“X分之Y”结构转换为分数形式:
输入: 五分之一 输出: 1/5 输入: 百分之七十五 输出: 75%5.6 度量单位
结合数量与单位词,输出紧凑英文缩写:
输入: 二十五千克 输出: 25kg 输入: 三十公里每小时 输出: 30km/h5.7 数学符号
处理正负号、小数、零值等特殊表达:
输入: 负二 输出: -2 输入: 正五点五 输出: +5.55.8 车牌号码
专用车牌识别逻辑,仅转换数字部分,保留汉字与字母结构:
输入: 京A一二三四五 输出: 京A12345 输入: 沪B六七八九零 输出: 沪B678906. 实用技巧与最佳实践
6.1 长文本混合转换
系统支持在同一段落中识别并转换多个实体类型:
输入: 这件事发生在二零一九年九月十二日的晚上,大概八点半左右,涉及金额为一万二千元。 输出: 这件事发生在2019年09月12日的晚上,大概8:30左右,涉及金额为12000元。应用场景:客服录音转录、会议纪要整理、新闻稿自动化编辑。
6.2 大规模数据批处理
针对每日新增数万条语音转写文本的场景,推荐使用批量转换功能: 1. 将 ASR 输出按行写入.txt文件 2. 使用定时脚本自动上传并调用接口 3. 下载结果后导入数据库或分析平台
性能参考:普通服务器(4核CPU)每分钟可处理约 5000 条短句。
6.3 结果持久化保存
点击「保存到文件」按钮,系统会将当前输出内容写入服务器本地文件,命名格式为:
itn_result_20250405_1430.txt包含时间戳,便于版本追踪与审计。
7. 常见问题与解决方案
7.1 Q1: 转换结果不准确?
可能原因: - 输入文本存在方言或非标准表达 - 高级设置未正确配置
解决方法: - 检查是否启用“大写数字”支持 - 调整“转换独立数字”选项 - 提交错误样例给开发者反馈优化模型
7.2 Q2: 是否支持方言或变体?
目前支持以下标准普通话表达方式: - 简体数字:一、二、三 - 大写数字:壹、贰、叁 - 口语变体:幺(一)、两(二)
暂不支持粤语、闽南语等地方发音对应的书写形式。
7.3 Q3: 首次转换延迟较高?
这是正常现象。系统在首次加载时需编译 FST 规则图,耗时约 3–5 秒。后续请求可在毫秒级完成。
可通过后台预加载机制避免冷启动延迟。
7.4 Q4: 如何遵守版权要求?
本项目承诺永久开源免费使用,但必须保留以下声明:
webUI二次开发 by 科哥 | 微信:312088415 承诺永远开源使用 但是需要保留本人版权信息!请勿去除界面上的开发者标识,亦不可用于闭源商业产品封装。
8. 操作按钮功能说明
| 按钮 | 功能描述 |
|---|---|
| 开始转换 | 执行当前输入文本的标准化处理 |
| 清空 | 清除输入与输出区域内容 |
| 复制结果 | 将输出内容复制回输入框(便于连续修改) |
| 保存到文件 | 将结果写入服务器本地带时间戳的文本文件 |
| 批量转换 | 处理上传的多行文本文件并生成结果下载 |
9. 用户界面布局说明
主界面采用简洁直观的设计风格:
┌─────────────────────────────────────────┐ │ [紫蓝渐变] 中文逆文本标准化 (ITN) │ │ webUI二次开发 by 科哥 │ ├─────────────────────────────────────────┤ │ [📝 文本转换] [📦 批量转换] │ │ │ │ ┌───────────┐ ┌───────────┐ │ │ │ 输入框 │ → │ 输出框 │ │ │ │ │ │ │ │ │ └───────────┘ └───────────┘ │ │ │ │ [开始转换] [清空] [复制] [保存] │ ├─────────────────────────────────────────┤ │ 🎯 快速示例 │ │ [日期] [时间] [数字] [货币] ... │ └─────────────────────────────────────────┘底部设有「快速示例」快捷按钮组,一键填充典型测试用例,提升调试效率。
10. 总结
FST ITN-ZH 是一款功能完备、易于部署的中文逆文本标准化工具。通过科哥的 WebUI 二次开发,极大提升了可用性与交互体验,使其不仅适用于研究人员,也能被一线工程师和业务人员轻松掌握。
本文系统介绍了其部署方式、核心功能、高级配置、典型用例及维护要点。无论是用于语音识别后处理、日志清洗,还是智能客服语义理解,FST ITN-ZH 都能提供稳定可靠的标准化能力。
未来可进一步拓展方向包括: - 增加更多方言支持 - 接入 NLP pipeline 实现端到端流水线 - 提供 RESTful API 接口供第三方调用
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。