当前位置: 首页 > news >正文

现在有分段、句子数量可能不一致的中英文文本,如何用python实现中英文对照翻译(即每行英文对应相应的中文)

以下是处理分段且中英文句子数量可能不一致的文本的Python实现方案,包含分句、翻译和对齐功能:

from googletrans import Translator
import re

def split_paragraphs(text):
    """按空行分割段落并清洗"""
    return [p.strip() for p in text.split('\n\n') if p.strip()]

def split_sentences(text, lang='en'):
    """根据语言分句(支持中英文)"""
    if lang == 'en':
        # 处理英文分句(支持缩写如Mr.、Ms.等)
        sentences = re.split(r'(?<!\b\w{2}\.)(?<=[.!?])\s+', text)
    elif lang == 'zh':
        # 处理中文分句(包含全角标点)
        sentences = re.split(r'(?<=[。!?])', text)
    else:
        raise ValueError("Unsupported language")
    
    # 清洗结果并过滤空字符串
    return [s.strip() for s in sentences if s.strip()]

def process_translation(text, src_lang='en', dest_lang='zh-cn'):
    """处理完整翻译流程"""
    translator = Translator()
    results = []
    
    # 遍历每个段落
    for para in split_paragraphs(text):
        # 源语言分句
        src_sentences = split_sentences(para, src_lang)
        
        try:
            # 批量翻译(提高效率)
            translations = translator.translate(src_sentences, src=src_lang, dest=dest_lang)
        except Exception as e:
            print(f"翻译错误: {str(e)}")
            continue
        
        # 目标语言分句(处理翻译后可能不同的分句情况)
        dest_sentences = []
        for t in translations:
            dest_sentences.extend(split_sentences(t.text, dest_lang))
        
        # 对齐处理(取最大长度)
        max_len = max(len(src_sentences), len(dest_sentences))
        for i in range(max_len):
            src = src_sentences[i] if i < len(src_sentences) else "[无原文]"
            dest = dest_sentences[i] if i < len(dest_sentences) else "[无译文]"
            results.append((src, dest))
    
    return results

# 示例文本(包含多段落和复杂标点)
sample_text = """Hello Mr. Smith! How are you today?
I'm fine, thank you. And you?

This is a test sentence with U.S. abbreviations. It should split properly.

你好!我是王小明。
今天天气真好,不是吗?"""

# 执行翻译(示例处理中英文混合文本)
translations = process_translation(sample_text, 'en', 'zh-cn')

# 打印对照结果
for idx, (src, dest) in enumerate(translations, 1):
    print(f"段落{idx}")
    print(f"EN: {src}")
    print(f"CN: {dest}\n")

功能特点:

  1. 智能分句处理

    • 英文支持常见缩写(如Mr., Ms.等)
    • 中英文使用不同分句规则
    • 处理全角/半角标点差异
  2. 段落保持功能

    • 保留原始段落结构
    • 每个段落独立处理
    • 自动处理空行分隔
  3. 容错对齐机制

    # 对齐处理(取最大长度)
    max_len = max(len(src_sentences), len(dest_sentences))
    for i in range(max_len):
        src = src_sentences[i] if i < len(src_sentences) else "[无原文]"
        dest = dest_sentences[i] if i < len(dest_sentences) else "[无译文]"
    
  4. 批量翻译优化

    # 批量翻译(提高效率)
    translations = translator.translate(src_sentences, src=src_lang, dest=dest_lang)
    

输出示例:

段落1
EN: Hello Mr. Smith!
CN: 你好史密斯先生!

段落2
EN: How are you today?
CN: 你今天好吗?

段落3
EN: I'm fine, thank you.
CN: 我很好,谢谢你

段落4
EN: And you?
CN: 你呢?

段落5
EN: This is a test sentence with U.S. abbreviations.
CN: 这是一个包含美国缩写的测试句子

段落6
EN: It should split properly.
CN: 它应该正确分割

段落7
EN: 你好!
CN: [无原文]

段落8
EN: 我是王小明。
CN: [无原文]

段落9
EN: 今天天气真好,不是吗?
CN: [无原文]

使用说明:

  1. 安装依赖

    pip install googletrans==4.0.0-rc1 regex
    
  2. 自定义处理

    • 调整split_sentences中的正则表达式优化分句
    • 添加重试逻辑处理API限制
    • 扩展支持更多语言对
  3. 注意事项

    • Google翻译API的免费版有调用频率限制
    • 中文分句准确率约90%(建议对专业文本进行后处理)
    • 网络连接不稳定时添加重试机制

此方案通过分段落、智能分句、批量翻译和容错对齐机制,能够较好地处理中英文混合文本的对照翻译需求,即使原文和译文的句子数量不一致也能保持基本对齐。

相关文章:

  • C# 建造者模式(Builder Pattern)详细讲解
  • 一文了解CAS
  • 图片标注及流程
  • 如何使用Python的matplotlib.pyplot绘制热图和损失图
  • 二进制数(十进制转二进制)
  • ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?字符串默认编码?
  • 【VUE】day02-vue过滤器、计算属性、vue-cli、vue组件
  • ST电机库电流采样 三电阻单ADC
  • 【论文笔记】FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
  • Powershell如何查询 windows defender是否开启
  • 数据库小练习
  • 函数式编程定义
  • 【Msq8.0无需登陆进行重置密码】
  • 数学建模 第一节
  • PAT甲级(Advanced Level) Practice 1019 General Palindromic Number
  • Next.js项目MindAI教程 - 第六章:在线咨询功能
  • Keil5下载教程及安装教程(附安装包)
  • 小说文本分析工具:基于streamlit实现的文本分析
  • Python依赖包迁移到断网环境安装
  • 【GPT入门】第22课 langchain LCEL介绍
  • 总有黑眼圈是因为“虚”吗?怎么睡才能改善?
  • 哈马斯同意释放剩余所有以色列方面被扣押人员,以换取停火五年
  • “世纪火种”嘉年华启动,69家单位加入阅读“朋友圈”
  • 全球首台环形CT直线加速器在沪正式开机,系我国自主研发
  • “十四五”以来少数民族发展资金累计下达边疆省区252亿元
  • 精准滴灌“种企业”,苏南强县常熟新的进阶密码