欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

给一篇字数不确定的英文做机翻

程序员文章站 2022-10-03 13:32:31
项目场景:给一篇字数不确定的英文做机翻给一篇英文文章做机翻,字数不确定,调用谷歌翻译,但限制字符不超过5000问题描述:因为是英文,不能按照字符刚好是5000时卡住,只翻译前5000个字符,这样有可能将一个单词或短语给拆分,翻译结果有误解决方案:将英文文章按段落‘\n’切分,再一段一段进行拼接,如果拼接到某一段落时超出字符限制,将那一段落算到下一次翻译原文中,代码如下:def split_long(web_text, limit=4800): ''' 用于长字....

项目场景:

给一篇英文文章做机翻,字数不确定,调用谷歌翻译,但限制字符不超过5000


问题描述:

因为是英文,不能按照字符刚好是5000时卡住,只翻译前5000个字符,这样有可能将一个单词或短语给拆分,翻译结果有误


解决方案:

将英文文章按段落‘\n’切分,再一段一段进行拼接,如果拼接到某一段落时超出字符限制,将那一段落算到下一次翻译原文中

代码如下:

def split_long(web_text, limit=4800):
    '''
    用于长字符串按指定限制长度进行分割
    如果未指定长度,则按4800分割,用于调用谷歌翻译接口

    调用方法:使用循环调用

        strings = split_long(web_text, limit=4800)

        1、 for 循环
        for s in strings:
            print(s)

        2、while 循环
        while True:
            try:
                s = next(strings)
                # s = strings.__next__()
                print(s)
            except StopIteration:
                break

    :param web_text: 网页文本的长度
    :param limit: 限定的长度,默认为4800
    :return:
    '''

    # 通过 \n 构建网页字符串的分段列表 source
    source = web_text.split('\n')

    f = ""  # 初始化空字符串 f
    while len(source) > 0:  # 循环条件,当分段列表 source 变为空的时候停止循环

        # 取出列表中的第一个元素赋值给 a
        a = source.pop(0)

        # 拼接字符串 f 并将其赋值给 f1
        f1 = f + a + "\n"
        if len(f1) > limit:  # 当 f1 的长度大于限定长度时

            # 长度大于限定长度则将 a 还给分段列表 source, 用于下次的重新取出
            source.insert(0, a)

            # 将最大限度拼接好的字符串 f 返回出去
            yield f

            f = ""  # 重新初始化字符串 f 为空字符串,用于下次的拼接

        else:  # 否则 字符串 f 的值为 拼接好的 f1 的值,继续进行拼接
            f = f1

    # 当循环停止后,返回最后拼接的字符串 f
    yield f

调用后的结果是个迭代器,所以循环打印或机翻即可

代码如下:

for i in split_long(detail):
    print(len(i))
    # 调用机翻
    # Googletrans(i)

 

 

 

本文地址:https://blog.csdn.net/yl_1995/article/details/109613196

相关标签: python 机器翻译