Kaggle数据增强攻略来了!不氪金实现50种语言互译

简介: Kaggle数据增强攻略来了!不氪金实现50种语言互译

俗话说,巧妇难为无米之炊。作为一名NLP算法工程师,我对这句话实在是感同身受。在平时的工作或比赛中,数据量匮乏是极其常见的问题,有时候甚至压根就没数据!


面对这些情况,首先想到的方法可能是通过搜索引擎查找开源数据集。然鹅无论是工作还是比赛中,我们面对的基本上是细分领域的场景,公开数据很难满足需求。而且不同公司的内部需求场景天差地别:比如A公司的需求是对用户的个人简介做人物画像以精准推送相关新闻,B公司的需求可能是根据用户评论做恶意评价判定。这些场景下,公开的同类型数据可能帮助很有限,倒是可以考虑做个迁移学习。同时中文领域公开数据集不足,想迁移估计都挺困难。假如我们有少量数据,或正好能找到对应的英文或者其他外语语料,如何快速获得大批数据呢?最简单的一种方法,翻译!


那如果没有翻译的基础,不能构建相应的翻译模型咋办?用百度或者谷歌等现成的翻译API接口呀!如果数据量很大,又不想氪金怎么办?额...用免费的谷歌翻译接口吧!这类接口一般会有访问频率限制,同时长时间访问会被系统限制🚫。咱们学生党做个比赛,面对几万或者几十万篇wiki文档的翻译,那真的是挠破头皮了!有没有什么免费好用的接口呀?没有!免费好用确实不存在。但是,我们可以利用现有工具“创造”一个新的翻译接口出来!


离线回译数据增强

下面,为大家介绍一下最近我在Kaggle竞赛中使用的增强方法:离线回译数据增强。

“离线回译数据增强”使用Seq2Seq预训练模型翻译来进行数据增强,可以自己构建翻译模块,不用访问任何在线API,即能翻译海量数据;适用场景广,尤其是某些比赛有不能联网的限制。听到“Seq2Seq+翻译+构建”,是不是就头皮发麻了?不着急,整个流程我已经帮你构建好了,只需要调用它就行,而且你还不需要有自己的GPU!


直接放链接了:

https://www.kaggle.com/vanle73/back-translation-offline-for-data-augmentation

如果你还不知道怎么用Kaggle平台,可以参考这篇文章:实验室一块GPU都没有怎么做深度学习?


白嫖的显卡,才是真的香!


下面简单介绍下食用方法,整个离线翻译的notebook分为3部分:预训练模型下载、翻译接口构建、示例。


预训练模型下载

这里使用的是Meta发布的mbart-large-50-many-to-many-mmt预训练模型,它是mBART-large-50针对多语种互译进行微调得到的翻译模型。


该模型能够在50种语言之间进行互译,实现49*50=2450个语种对的翻译。原来的回译可能比较拘束:中文->英文->中文现在,回译流程可以这样玩:中文->泰米尔语->印尼语->西班牙->中文妈妈再也不用担心我不懂“泰米尔语”了!翻译接口构建为了能够加速翻译,同时支持长文本输入(输入文本tokenized之后的长度大于512),我设计了一个接口:


def trans_module(text, source_language, target_language, piece_len=256, max_batch =8):
    '''
    piece_len: max length of input
    max_batch: num sample of translation per time
    '''
    # 完整代码请参考:https://www.kaggle.com/vanle73/back-translation-offline-for-data-augmentation


通过设定piece_len(输入长文本拆分后每个片段的长度,应小于512)和max_batch(每次并行翻译的样本量,针对长文本),你可以根据自己的GPU显存大小和样本长度得到最优的翻译效果。最后返回的内容是整个长文本的翻译结果。


参考示例

实际调用的例子就非常简单啦,直接调用trans_module即可。例如现在有一个英文句子,

Looks like be have an abuser , can you please look into this?  thanks.能够看到“英翻中”和“中翻英”的结果还不错:

微信图片_20220524150528.png


更多语种的调试,留给大家亲自测试啦!

通过本文介绍的回译增强方法,结合简单的数据清洗规则,可以帮助你的数据规模实现double翻倍!


同时,在回译流程中引入多语种链路,相比传统的单语种翻译在文本表达上也会有更好的多样性。


相关文章
|
5月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
103 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
5月前
|
数据采集 算法 数据挖掘
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题三时间序列预测Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛B题的Python代码分析,涉及美国纽约公共自行车使用量的时间序列预测、网络分析和聚类分析。
57 0
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题三时间序列预测Python代码分析
|
5月前
|
数据采集 算法 数据挖掘
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析
本文分析了2023年第二届钉钉杯大学生大数据挑战赛初赛B题"美国纽约公共自行车使用量预测分析",重点讨论了问题一的Python代码实现,包括自行车借还网络图的构建、网络密度的计算以及平均最短路径长度和网络直径的分析。
60 0
【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析
|
5月前
|
数据采集 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二Python代码分析
本文提供了2023年第二届钉钉杯大学生大数据挑战赛初赛B题"美国纽约公共自行车使用量预测分析"中问题二的Python代码分析,涉及数据预处理、特征工程、多种聚类算法实现及其结果评估和可视化。
50 0
|
5月前
|
数据采集 人工智能 数据挖掘
【钉钉杯大学生大数据挑战赛】初赛B 航班数据分析与预测 Python代码实现Baseline
本文提供了参加"钉钉杯大学生大数据挑战赛"初赛B的航班数据分析与预测项目的Python代码实现Baseline。内容包括题目背景、思路分析、训练集和测试集的预处理、模型训练与预测、特征重要性分析,以及代码下载链接。预处理步骤涉及读取数据、时间信息处理、前序航班延误时间计算、天气信息匹配等。模型训练使用了Gradient Boosting Classifier,并对模型的准确率和特征重要性进行了评估。
96 0
|
5月前
|
人工智能 自然语言处理 数据挖掘
🎯直击要害!生成式模型新手村毕业攻略:打造高效提示词秘籍📚
【8月更文挑战第1天】踏入生成式模型的世界,新手常感迷茫。高效提示词是通往AI创意大门的钥匙。首先要理解提示词的本质:它是你意图的载体。明确目标后,构建提示词框架:设定主题、描绘场景、添加情节线索,并指定风格。实战演练中不断优化提示词,激发模型潜力。掌握这些技巧,你就能在AI创作之路上越走越远,征服这片新大陆!
56 0
|
7月前
|
人工智能
[AI Google] TimesFM:AI预测股市价格,能否助我财务自由?
探索谷歌TimesFM模型,看看它能否通过预测股票价格帮助我们实现财务自由。
[AI Google] TimesFM:AI预测股市价格,能否助我财务自由?
|
7月前
|
自然语言处理 UED C++
《百炼成金-大金融模型新篇章》––06.问题4:“大模型RAG一天入门vs365天的持续优化”,RAG系统的修行
百炼必定成金,新质生产力会催生新质劳动力,谨以此文抛砖引玉,希望与业内的各位朋友一同探讨如何积极拥抱并运用大模型技术,以应对和驾驭不断变化的市场环境,实现科技金融持续稳定的提质增效和创新发展,携手开启金融大模型未来新篇章。
|
7月前
|
人工智能 安全 数据处理
《百炼成金-大金融模型新篇章》––04.问题2:“开源模型vs商业模型”,左右互搏的自建大模型之路
百炼必定成金,新质生产力会催生新质劳动力,谨以此文抛砖引玉,希望与业内的各位朋友一同探讨如何积极拥抱并运用大模型技术,以应对和驾驭不断变化的市场环境,实现科技金融持续稳定的提质增效和创新发展,携手开启金融大模型未来新篇章。
如何用ChatGPT做品牌联名方案策划?
该场景对应的关键词库(15个): 品牌、个人IP、社交话题、联名策划方案、调研分析、市场影响力、资源互补性、产品体验、传播话题、视觉形象设计、合作职权分配、销售转化、曝光目标、宣发渠道、品牌形象
298 0