AI 中文语料怎么做繁简转换?用 OpenCC 保留原文并核对地区词汇

用 OpenCC 纯 Python 实现对比 t2s 与 tw2sp,保存原文和转换配置,验证地区词汇差异、往返不可逆与实体位置风险。

中文 AI 语料混用繁体与简体时,可以先决定统一的字形和词汇规则,再做批量转换。OpenCC 支持字形转换与地区词语转换;两者结果可能不同。下面以本地小样本演示 t2s 和 tw2sp,并把原文和配置一起保存,方便回查。

选择字形还是地区词汇转换

t2s 主要处理繁体到简体;tw2sp 还处理台湾常用词汇到大陆常用词汇。以“軟體、滑鼠”为例,仅改字形与改成“软件、鼠标”属于不同处理政策。目标是大陆简体检索语料时可能选 tw2sp;需要保留原作者用词时,应先评估是否只改字形或保持原文。

AI 中文语料怎么做繁简转换?用 OpenCC 保留原文并核对地区词汇

不要根据每句话随机选择配置。给同一语料版本使用明确规则,记录源文本语言地区、配置和库版本。本文使用 opencc-python-reimplemented 0.1.7,这是使用 OpenCC 字典的独立纯 Python 实现;其版本与 BYVoid 原生项目分开维护,不承诺包含原项目当前全部字典更新。

环境与人工语料

示例在 Windows、Python 3.11.15 的本地 CPU 环境实际运行。新建空文件夹,将后面完整代码保存为 02-opencc-corpus.py,在该目录用 PowerShell 执行:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install opencc-python-reimplemented==0.1.7
.\.venv\Scripts\python.exe 02-opencc-corpus.py

最后一行在保存代码后执行。macOS 或 Linux 使用 ./.venv/bin/python。输出文件留在当前目录,先用教学样本核对;代码不调用大模型 API,也不修改你的原始业务文件。

教学样本只有两条,不涉及真实用户文档、许可争议或模型效果。完整代码给同一原文运行两种配置,保留稳定编号 source_text、converted_text、config、字符数。字形转换不会自动更新外部标注位置。

完整代码与结果文件

把完整代码保存为 02-opencc-corpus.py 后运行,先对照 t2s 与 tw2sp 两组结果,再打开 converted_corpus.jsonl 检查原文、转换结果、配置和字符数是否同时保存。

import json
from pathlib import Path
from opencc import OpenCC

# 人工语料,保留原文与配置;这里只是文本转换,没有训练模型。
records = [{'id': 'demo-01', 'text': '我買了軟體和滑鼠。'},
           {'id': 'demo-02', 'text': '頭髮與發展需要分清。'}]
converters = {name: OpenCC(name) for name in ('t2s', 'tw2sp')}
result = []
for row in records:
    for config, cc in converters.items():
        converted = cc.convert(row['text'])
        result.append({'id': row['id'], 'source_text': row['text'],
                       'converted_text': converted, 'config': config,
                       'source_chars': len(row['text']), 'output_chars': len(converted)})
        print(row['id'], config, '=>', converted)
with Path('converted_corpus.jsonl').open('w', encoding='utf-8') as out:
    for row in result:
        out.write(json.dumps(row, ensure_ascii=False)+'\n')
original = '后'
simple = OpenCC('t2s').convert(original)
roundtrip = OpenCC('s2t').convert(simple)
print('roundtrip:', original, '->', simple, '->', roundtrip)
print('exact_recovery:', original == roundtrip)
assert len(result) == 4
assert records[0]['text'] == '我買了軟體和滑鼠。'
print('saved converted_corpus.jsonl')

实际输出如何解释

demo-01 t2s => 我买了软体和滑鼠。
demo-01 tw2sp => 我买了软件和鼠标。
demo-02 t2s => 头发与发展需要分清。
demo-02 tw2sp => 头发与发展需要分清。
roundtrip: 后 -> 后 -> 後
exact_recovery: False
saved converted_corpus.jsonl

t2s 将第一句转换成“我买了软体和滑鼠。”,tw2sp 输出“我买了软件和鼠标。”;最后的 exact_recovery 为 False,说明“后”经过往返后成为“後”。

“后”本来可以出现在“皇后”等语境中,单独字符经简体转换再转繁体后,这个实现选择了“後”。这里只展示多对一合并后的恢复风险;不能据一个单字结果判断整个词库的语境能力。正式内容应检查人名、地名、品牌、专业术语和原文引文。

送入训练或检索前还要核对什么

繁简转换可能把不同原字或词语合并,往返转换不能保证字节或字符原样还原。需要保留引用、专名、标签位置或审计依据时,应保存原文并单独检查转换结果。

在训练集和后续预测输入上采用相同预处理规则,避免一个阶段保留“软体”,另一个阶段变为“软件”。如果既保留繁体原文又生成简体版本,两条同源文本应按来源分组进入同一数据划分,避免把改写副本放到训练和测试两边。

转换前后长度可能变化,原来的实体或答案起止位置不能直接沿用。应在转换前保留标注和原文,检查转换后目标片段,必要时重新标注或建立经验证的映射。本例只保存字符数,没有实现任意实体位置映射。

转换结果如果出现不合业务用词,先核对配置与实现版本,再保存最小失败样本。不要对整批原文件就地覆盖,也不要把多个转换包同时安装后凭 import opencc 判断用了哪个实现。新环境和固定版本能减少这类混淆。

官方资料与核对范围

资料读取日期为 2026 年 10 月 1 日。接口行为依照以下官方文档或项目说明核对,输出来自上述本地教学代码。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31807.html

赞 (0)
AI小管家的头像AI小管家
AI 提示词模板怎么复用?用 Jinja2 检查缺失变量并生成固定格式
上一篇 2小时前
AI 语料读取报 UnicodeDecodeError 怎么办?定位编码错误并保留原始字节
下一篇 2小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部