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

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

from googletrans import Translator
import redef 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%(建议对专业文本进行后处理)
    • 网络连接不稳定时添加重试机制

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言每日一练——day_8

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第八天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

基础知识《Redis解析》

Redis 详细解析与介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对&#xff08;Key-Value&#xff09;数据库&#xff0c;支持多种数据结构&#xff08;如字符串、哈希、列表、集合等&#xff09;&#xff0c;广泛应用于缓存、消息队列、…

区跨链知识和概念

1、以太坊 Geth 源码解析 Geth&#xff08;Go Ethereum&#xff09;是以太坊官方提供的 Go 语言实现的客户端&#xff0c;广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑&#xff0c;如区块同步、EVM 执行、P2P 交互等。 2、…

Vue 计算属性与 Data 属性同名问题深度解析

文章目录 1. 问题背景与核心概念1.1 Vue 响应式系统架构1.2 核心概念定义 2. 同名问题的技术分析2.1 同名场景示例2.2 问题发生机制 3. 底层原理剖析3.1 Vue 初始化流程3.2 响应式系统关键代码 4. 问题解决方案4.1 最佳实践建议4.2 错误处理机制 5. 性能影响分析5.1 递归调用性…

Mybatis——基础操作、动态SQL

目录 一.基础操作 1.删除 2.新增 3.更新 4.查询 5.XML映射文件 二、动态SQL 1.<if> 2.<where> 3.<set> 4.<foreach> 5.<sql> 6.<include> 一.基础操作 1.删除 参数占位符&#xff1a; 注意&#xff1a; #{...}相比于${...}…

[设计模式]1_设计模式概览

摘要&#xff1a;设计模式原则、设计模式的划分与简要概括&#xff0c;怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用&#xff0c;后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则&#xff08;语言无关&#xff09; 本质原理图 原…

C语言数据类型取值范围及格式化符号

一、数据类型取值范围与格式化输出符号表格 数据类型大小&#xff08;字节&#xff09;取值范围格式化输出符号char1-128到127<br>或0到255&#xff08;如果声明为unsigned char&#xff09;%c (字符)<br>%hhu (无符号)signed char1-1.2810到1.2710%hhd (有符号)u…

2024华东师范大学计算机复试上机真题

2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测&#xff1a;传动门&#xff1a;pgcode…

星越L_内后视镜使用讲解

目录 1内后视镜角度调节 2,防炫目功能

Spring Boot应用首次请求性能优化实战:从数据库连接池到JVM调优

目录 问题现象与背景分析性能瓶颈定位方法论数据库连接池深度优化Spring Bean生命周期调优JVM层性能预热策略全链路监控体系建设生产环境验证方案总结与扩展思考1. 问题现象与背景分析 1.1 典型问题场景 在某互联网金融项目的Spring Boot应用上线后,运维团队发现一个关键现象…

【深度解析:以“不要的心态”获取所求的本质逻辑】

深度解析&#xff1a;以“不要的心态”获取所求的本质逻辑 一、文化基因&#xff1a;礼让传统与权力合法性的双重编码 儒家伦理的深层渗透 孔子提出"礼之用&#xff0c;和为贵"&#xff0c;将"辞让"纳入"仁义礼智信"的道德体系。《礼记》明确记…

C++【类和对象】(结束篇)

C类和对象 1.static成员2.友元3.内部类4.匿名对象5.对象拷贝时的编译器优化 1.static成员 用static修饰的成员变量叫做静态成员变量&#xff0c;静态成员一定要在类外进行初始化。静态成员变量为所有类的共享&#xff0c;放入静态区&#xff0c;不属于某个具体对象&#xff0c…

每日一题---腐烂的苹果(广度优先搜索)

腐烂的苹果 给定一个 nm nm 的网格&#xff0c;其中每个单元格中可能有三种值中的一个 0 , 1 , 2。 其中 0 表示这个格子为空、1 表示这个格子有一个完好的苹果&#xff0c;2 表示这个格子有一个腐烂的苹果。 腐烂的苹果每分钟会向上下左右四个方向的苹果传播一次病菌&…

maven笔记

maven介绍和作用 Maven 是一款为 Java 项目构建管理、依赖管理的工具&#xff08;软件&#xff09;&#xff0c;使用 Maven 可以自动化构建、测试、打包和发布项目&#xff0c;大大提高了开发效率和质量。 主要作用的理解&#xff1a; 依赖管理&#xff1a; 在编写项目时我…

模板-C++提高编程

C的一种编程思想称为泛型编程&#xff0c;用到的技术就是模板 C提供两种模板&#xff1a;函数模板和类模板。 1.函数模板 1.函数模板作用 建立一个通用函数&#xff0c;其返回值类型和形参类型可以用一个虚拟的类型来代替,提高代码复用性&#xff0c;将类型参数化。 2.语法…

基于Asp.net的物流配送管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

顺序表和链表的对比(一)

前言 今天给小伙伴们分享的是在数据结构中顺序表和链表的对比。它们在计算机科学和软件开发中具有广泛的应用&#xff0c;是理解更复杂数据结构&#xff08;如栈、队列、树、图等&#xff09;的基础。这次将会给大家从定义初始化&#xff0c;以及功能增删查改上进行详细对比&a…

星越L_外后视镜使用讲解

目录 1.外后视镜调节 2后视镜折叠 3.后视镜加热 1.外后视镜调节 L控制左边后视镜调节,上下拨动调整视野,一般此镜左右21分,上下55开。 R控制左边后视镜调节,上下拨动调整视野,一般此镜左右13分,上下55开。 2后视镜折叠 车辆解锁自动展开 车辆关闭自动折叠 严寒天气…

DevOps实践:持续集成与持续部署完全指南

文章目录 引言&#xff1a;从人工到自动化的进化革命一、CI/CD核心认知升级1.1 持续集成 vs 持续部署 vs 持续交付1.2 中小团队为什么要实施CI/CD&#xff1f; 二、CI/CD工具链选型指南2.1 中小团队推荐技术栈2.2 工具对比决策矩阵 三、实战五步构建企业级流水线3.1 基础环境搭…

【数据结构】数据结构,算法 概念

0.本篇问题&#xff1a; 数据、数据元素、数据对象、数据项之间的基本关系&#xff1f;ADT是什么&#xff1f;数据结构的三要素&#xff1f;数据的逻辑结构有哪些&#xff1f;数据的存储结构有哪些&#xff1f;算法的五个特征&#xff1f;O(1) O(logn) O(n^n) O(n) O(n^2…