第 10 章 · 语料建设

语料质检

概

质量为何重要?

质检是检查材料是否完整、原译文是否对应、内容是否适合参考。例如,把“Do not open.”与“请打开。”收入翻译记忆,下一次遇到相同英文时就可能推荐错误译文。检查时应同时看原文、译文和使用语境。

对翻译记忆 (TM) 的影响

  • 错误句对作为「完全匹配」被 CAT 推荐,译员可能未加审查直接采用
  • 术语不一致导致同一概念多种译法,破坏项目术语统一性
  • 译文不完整时,即使推荐了旧句,也可能无法用于当前翻译

对机器翻译 (MT) 的影响

  • 错配的原译文会提供错误示范,例如把“关闭阀门”配成“Open the valve”
  • 广告或乱码混入训练材料,例如把“Subscribe now”当成正文,会提供无用示例
  • 材料数量多不能弥补错位,同一条错误记录重复1000次仍然有错
错

四类常见错误

错误类型 表现 检测思路
错位 (Misalignment) 英中句义不对应,如 EN 谈英语教育、ZH 谈经济 人工阅读;长度比异常;关键词不匹配
漏译 / 未译段 中文为空,或英文句子疑似未译;型号A320等例外需保留 查空白或疑似原文未译;专名、产品型号相同可能合理
术语不一致 同一项目把runway混译为“跑道”和“滑行道”,需要按概念和术语表核对 按同一概念和项目要求核对,不能只看英文是否相同
编码问题 乱码(如 气候)、不可见字符 对照原稿和编码检查文字显示;看似正常的汉字也可能是乱码

一句译两句可能合理。若程序强行按序号配对,才可能把第二句错配给下一条原文;应回看整段,确认哪些句子共同表达原意。

抽

抽样策略

材料多时,可以先批量检查,再抽查内容。批量检查例如查空白、重复;人工核对例如确认“not”是否译出。两者发现的问题不同。

1

随机抽查(比例按材料决定)

随机抽查可发现未被程序提示的错误。例如,从100条中抽5条只能作初步观察,不能据此认定全部合格;金额、否定和安全指令等内容还应重点核对。抽查数量须结合材料规模、用途和风险决定。

2

重点检查首尾

首尾容易混入标题、漏掉正文或带入广告,可重点检查。例如,合同最后一段若是免责条款,不能因位于页尾就当作无用页脚删除。

+

优先复核程序提示的记录

程序提示的记录应先复核,但提示不等于错误。例如,型号“A320”在中英文里相同可能正确;不能仅因相同就判为未译。

码

Python 自动化初筛

脚本读取JSON记录,对content中的句对检查空白、英中长度比异常和完全重复。

Python代码
import json

def check_corpus(json_path, ratio_low=0.15, ratio_high=4.0):
    """对语料 JSON 做自动化质检,返回可疑句对列表。"""
    with open(json_path, "r", encoding="utf-8") as f:
        data = json.load(f)

    pairs = data["content"]
    issues = []

    seen = set()  # 重复检测

    for i, pair in enumerate(pairs):
        en = pair.get("sentence_english", "").strip()
        zh = pair.get("sentence_chinese", "").strip()
        idx = f"#{i + 1}"

        # ① 空句对
        if not en or not zh:
            issues.append({"index": idx, "type": "empty", "en": en, "zh": zh})
            continue

        # ② 英中长度比异常(字符数)
        ratio = len(zh) / len(en) if len(en) > 0 else 0
        if ratio < ratio_low or ratio > ratio_high:
            issues.append({
                "index": idx, "type": "length_ratio",
                "ratio": round(ratio, 2), "en": en[:60], "zh": zh[:60]
            })

        # ③ 完全重复
        key = (en, zh)
        if key in seen:
            issues.append({"index": idx, "type": "duplicate", "en": en[:60]})
        seen.add(key)

    return issues

# 使用示例
issues = check_corpus("corpus/china-english-language-education.json")
print(f"发现 {len(issues)} 条可疑记录")
for item in issues[:5]:
    print(item)

空句对

例如,原文“Close the valve.”有内容,译文栏为空,应回查是否漏提取或被误删。zip截断会丢记录,不会自动补出空译文。

长度比异常

例如,“No.”/“不。”很短却可能正确。长度差只能提供线索,不能直接证明漏译。

重复句对

例如,同一合同页被导入两遍会重复;不同合同都写“本协议自签署之日起生效”也可能合理,应结合来源判断。

空白、长度异常和重复只是初筛线索,内容是否准确仍需复核。

长度比怎样理解

代码用“中文字符数÷英文字符数”作提示,0.15和4.0只是本例阈值。例如,“The tenant shall pay the service charge.”漏译为“承租人应付款。”,比值7÷40=0.175,仍可能漏检。反过来,“United Nations Educational, Scientific and Cultural Organization”译为“联合国教科文组织”,比值8÷64=0.125,会被提示过短;核对名称后可以保留。

✓

人工复核清单

对程序提示或抽查选中的句对,逐项核对:

把提示变成有依据的判断

例如,记录12来自《采购合同》v2第4条,原文是“30 days”,译文却是“60日”。复核时记下该记录、来源及这两个数字的差异,回到合同确认。只有“长度异常”或“已处理”的提示,不能说明应改成什么。

  • 语义对应:中文是否表达了与英文相同的信息?有无张冠李戴?
  • 完整性:英文有内容的部分,中文是否均有对应?反之亦然?
  • 术语一致:领域关键词(如 dumb English → 哑巴英语)是否与项目术语表一致?
  • 改动有据:残留的网页标签可以处理;脚注、条款编号和有用空白要对照原稿决定。
  • 编码正常:中文显示是否正常,无乱码或问号替代?
  • 记录问题:发现问题时,记录句对序号、错误类型、建议修正,便于批量修复。

笔译练习:提示和实际问题是否一致

用途:为维修项目整理可靠译例,不能漏掉否定意思,也不能误删产品型号。

以下为模拟复核记录,包含不同检查给出的提示,并非上方脚本的输出。

结果原文译文系统提示
ADo not open.请打开。未提示
BA320A320疑似未译;已知A320为产品型号
CClose the valve.空白译文缺失

请判断:分别应保留、修正还是回查?哪些情况是误报或漏检?

参考答案

A漏译not,应修正为表示禁止开启的译文,如“请勿打开。”;系统未提示,属于漏检。B的型号可以原样保留,“疑似未译”是误报。C缺译文,应回查来源并补齐对应内容,确认前不能作为译例。