news 2026/6/10 17:31:20

FST ITN-ZH中文逆文本标准化:分数转换详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FST ITN-ZH中文逆文本标准化:分数转换详解

FST ITN-ZH中文逆文本标准化:分数转换详解

1. 简介与背景

中文逆文本标准化(Inverse Text Normalization, ITN)是语音识别系统输出后处理的关键环节,其目标是将口语化、非结构化的自然语言表达转换为标准的书面格式。在实际应用中,用户常以“五分之一”、“三分之二”等形式描述分数,而下游任务如信息抽取、数据报表生成等则需要将其统一转换为数学表达式“1/5”、“2/3”。

本文聚焦于FST ITN-ZH中文逆文本标准化系统的分数转换模块,深入解析其设计原理、实现机制及工程优化策略。该系统由开发者“科哥”进行WebUI二次开发,提供了直观易用的操作界面,并支持多种类型文本的批量处理。

本技术博客将从原理出发,结合代码示例和使用场景,全面剖析分数转换的核心逻辑,帮助读者理解其实现方式并掌握最佳实践方法。

2. 分数转换的工作机制

2.1 核心定义与语义映射

在中文语境下,分数通常由三部分构成:

  • 分子:表示被分割的部分,如“五”、“七”
  • :连接词,标志分数结构的开始
  • 母数:表示整体被分成多少份,如“八”、“十”

例如,“五分之三”的结构可拆解为:

  • 分子:“三”
  • 连接词:“分之”
  • 母数:“五”

系统通过有限状态转导器(Finite State Transducer, FST)构建规则网络,将上述模式映射为标准数学表达式3/5

2.2 转换流程分解

分数转换过程分为以下四个阶段:

  1. 模式匹配:识别输入文本中的“X分之Y”结构
  2. 数字解析:将中文数字(如“三”、“百二十三”)转换为阿拉伯数字
  3. 结构重组:按照“分子/母数”顺序构造输出字符串
  4. 格式规范化:确保斜杠/前后无空格,符合通用书写规范
def convert_fraction(text): import re # 匹配“X分之Y”结构 pattern = r'(.*?)([零一二三四五六七八九十百千万亿]+)分之([零一二三四五六七八九十百千万亿]+)(.*)' match = re.match(pattern, text) if not match: return text # 未匹配到分数结构,返回原字符串 prefix, denominator, numerator, suffix = match.groups() # 中文数字转阿拉伯数字(简化版) num_map = {"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10} def chinese_to_number(s): if s == "十": return 10 elif "十" not in s: return num_map.get(s, 0) else: parts = s.split("十") result = 0 if parts[0]: result += num_map[parts[0]] * 10 else: result += 10 if len(parts) > 1 and parts[1]: result += num_map[parts[1]] return result try: num = chinese_to_number(numerator) den = chinese_to_number(denominator) fraction_str = f"{num}/{den}" return f"{prefix}{fraction_str}{suffix}" except Exception as e: print(f"转换失败: {e}") return text # 示例调用 print(convert_fraction("这是五分之三的比例")) # 输出: 这是3/5的比例

核心提示:真实系统中使用预编译的FST模型进行高效匹配与转换,而非正则+字典映射,此处仅为说明逻辑。

3. 支持的分数表达形式

3.1 基础分数表达

系统支持标准的“X分之Y”结构,涵盖个位、十位、百位等复合数字:

输入输出
三分之一1/3
四分之三3/4
十分之七7/10
百分之二十五25/100

3.2 变体与口语化表达

考虑到实际语音输入的多样性,系统还兼容以下变体:

  • “几分之几” →/
  • “一半” →1/2
  • “大半” → 不转换(保留原文,因语义模糊)
  • “百分之百” →100%(归类为百分比,非分数)

3.3 多重分数嵌套处理

对于包含多个分数的长句,系统采用逐项替换策略:

输入: 五分之三的人赞成,四分之一的人反对。 输出: 3/5的人赞成,1/4的人反对。

系统通过滑动窗口扫描整个句子,依次识别并转换每一个独立的分数结构,避免遗漏或重复。

4. 高级设置对分数转换的影响

4.1 转换单个数字开关

当启用「转换单个数字 (0-9)」时,会影响分子或母数为单字的情况:

设置输入输出
开启三分之一1/3
关闭三分之一一/三

建议:若需保持中文风格输出(如教育类文档),可关闭此选项;若用于数据分析,则建议开启。

4.2 完全转换'万'的影响

虽然主要影响大数表达,但在极端情况下可能涉及分数:

输入: 一万分之一 启用完全转换'万': 1/10000 禁用完全转换'万': 1/1万

注意:后者不符合数学规范,建议在需要精确数值表达的场景中开启该选项。

5. 批量处理中的分数转换实践

5.1 文件准备规范

在使用「批量转换」功能时,应确保每行仅包含一个待处理文本,且分数表达清晰明确:

五分之一的学生缺席 百分之八十的概率下雨 十分之三的区域被淹没

5.2 性能优化建议

  • 避免歧义表达:如“两分之一”不要写作“两个一分之一”
  • 统一术语:尽量使用“百分之X”而非“X个百分点”,后者需额外语义分析
  • 预清洗数据:去除多余标点、乱码字符,提升转换准确率

5.3 错误排查技巧

若发现分数未正确转换,可按以下步骤排查:

  1. 检查是否含有非常规连接词(如“分成”、“分为”)
  2. 查看高级设置是否限制了数字转换
  3. 确认输入文本是否存在断词错误(如“五 分 之 三”中间有空格)

6. 技术扩展:与其他ITN模块的协同

分数转换并非孤立存在,它与多个ITN子模块协同工作,共同完成复杂文本的标准化:

6.1 与数字转换模块联动

中文数字解析依赖统一的数字转换引擎。例如,“一百二十三分之四十”需先将“一百二十三”转为123,“四十”转为40,再组合成40/123

6.2 与货币单位整合

某些金融场景中会出现“百分之五的利率” →5%的利率,此时需结合百分比与货币单位处理逻辑。

6.3 与数学表达式合并

当文本包含“负五分之二”时,系统需同时激活负数处理规则,最终输出-2/5


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:17:36

Windows平台RTMP流媒体服务器搭建指南:从零到专业直播

Windows平台RTMP流媒体服务器搭建指南:从零到专业直播 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想在Windows系统上快速搭建一个功能强大的RTMP流媒体服务器吗&…

作者头像 李华
网站建设 2026/6/2 21:39:12

OpCore Simplify:开启黑苹果配置智能革命新时代

OpCore Simplify:开启黑苹果配置智能革命新时代 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而烦恼&…

作者头像 李华
网站建设 2026/6/10 14:14:19

猫抓资源嗅探工具完全指南:从入门到精通

猫抓资源嗅探工具完全指南:从入门到精通 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页中的视频、音频无法下载而烦恼吗?想要轻松获取心仪的网络资源却不知从何下手…

作者头像 李华
网站建设 2026/6/10 15:36:25

DCT-Net性能挑战:处理超大人像照片的方案

DCT-Net性能挑战:处理超大人像照片的方案 1. 引言 1.1 业务场景描述 DCT-Net 是由 ModelScope 提供的一种基于深度学习的人像卡通化模型,能够将真实人像照片自动转换为具有艺术风格的卡通图像。该技术在社交娱乐、个性化头像生成、数字内容创作等领域…

作者头像 李华
网站建设 2026/5/28 15:11:33

Qwen-Image-Layered快速入门:一张图变多个可编辑图层

Qwen-Image-Layered快速入门:一张图变多个可编辑图层 1. 简介 我们很高兴推出 Qwen-Image-Layered 模型,该模型能够将图像分解为多个 RGBA 图层。这种分层表示方式解锁了内在可编辑性:每个图层可以独立操作而不会影响其他内容。通过将语义或…

作者头像 李华
网站建设 2026/6/10 15:34:35

OpenCore Simplify智能配置:告别黑苹果配置困扰的终极方案

OpenCore Simplify智能配置:告别黑苹果配置困扰的终极方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼&…

作者头像 李华