提高三元组实体和联系翻译速度的方法

自己在做三元组翻译时,因为种种原因不得不采取手动复制粘贴的方法,一共25w条三元组数据,在将其拆分成实体1-联系-实体2三个列表后,我发现实体1有很多关键词是重复的,而联系也有很多是重复的,我便想采用以下办法,避免重复翻译,减少复制粘贴次数,唉…

1. 将关键词列表去重 ,25w的“实体1”只剩2w5,“联系”从25w只剩下1w

去重过程参考我之前的记录,链接地址
或直接参考以下代码:

def remove_duplicates(path):
    with open(path, 'r', encoding = 'utf-8') as f:
        lines = f.readlines()
    unique_lines = set(lines)
    with open(path, 'w', encoding = 'utf-8') as f:
        f.writelines(list(unique_lines))

remove_duplicates("想要去重的文件名.txt")

2. 将不重复的关键词手动复制粘贴翻译

这就是纯体力活,复制粘贴在翻译引擎中即可,将翻译复制粘贴在新文件中,为了过会跟关键词合并起来

3. 将关键词和翻译组合,形成类似“字典”的文件

使用以下代码将关键词和手动复制粘贴好的翻译组合起来,形成自己的翻译表:

with open("三元组1已去重.txt", "r", encoding = 'utf-8') as f1, open("三元组1已去重翻译.txt", "r", encoding = 'utf-8') as f2, open("三元组1翻译表.txt", "w", encoding = 'utf-8') as f3:
    for line1, line2 in zip(f1, f2):
        line1 = line1.strip()
        line2 = line2.strip()
        f3.write(f"{line1}&&{line2}\n")

在这里“三元组1已去重.txt”文件是已经去重过的关键词列表,内容大致如下:
在这里插入图片描述
在"三元组1已去重翻译.txt"文件中,是上一个文件中关键词对应顺序的翻译,大致如下:
在这里插入图片描述

接下来使用上述代码将两个文件合并,“三元组1翻译表.txt”就是形成的翻译表字典,如下图:

在这里插入图片描述
我这里使用了“&&”作为分隔符,可以设置其他。

4. 逐行读取25w关键词,从字典找对应的翻译并写入新文件

使用以下代码,完成对25w条数据的翻译的快速查找并写入:

打开A、B、C三个文件
with open('三元组1.txt', 'r', encoding = 'gbk') as file_a, open('三元组1翻译表.txt', 'r', encoding = 'utf-8') as file_b, open('三元组翻译1.txt', 'w', encoding = 'utf-8') as file_c:
    # 读取B文件的内容到字典中,key为翻译前的文本,value为翻译后的文本
    translations = {}
    for line in file_b:
        parts = line.strip().split('&&')
        if len(parts) == 2:
            translations[parts[0]] = parts[1]
    
    # 读取A文件的每一行,在translations字典中查找对应的翻译并写入C文件中
    for line in file_a:
        original_text = line.strip()
        translated_text = translations.get(original_text, '')
        file_c.write(translated_text + '\n')

其中“三元组1.txt”是待翻译的25w条关键词,“三元组1翻译表.txt”是翻译字典,"三元组1翻译.txt"是要按顺序写入的关键词翻译,运行上述代码即可,有可能会报错字符编码问题,修改“encoding”即可,utf-8、gbk、gb2312甚至是直接将“encoding”删掉,自己试试就好了,运行这段代码几乎就是瞬间的事,就能将25w条数据翻译完并写入,就不用将25w条数据都复制粘贴翻译一遍了,效率提高近10倍。

总结

自己这次只对实体1和联系使用了此方法,因我觉得实体2重复的不多,后来发现实体2中重复项也很多,所以在之后的类似翻译工作中,我会将所有的数据都按照此方法来进行翻译,待翻译的数据越多,此方法用起来越爽!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Magneto_万磁王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值