当前位置: 首页 > 后端技术 > Python

文本工作者的福音:四行代码翻译,支持50种语言,开源代码,有性能测试

时间:2023-03-25 20:44:33 Python

最近(准确的说是昨天),有人发布了一个使用深度学习技术进行文本翻译的Python库,调用这很方便。基于FacebookAI提出的多语言翻译模型,支持50种语言。这对文本工作者来说是一个福音。我立马查了一下,写了一篇文章帮助大家使用。注意:使用它可能不需要深度学习知识,但需要Python的基本知识。安装和安装它非常简单。只需要执行这行代码:pipinstalldl-translate但建议新建一个环境进行安装。该库基于最新版本的PyTorch,未在其他版本上进行测试。为了不打扰系统中的环境(大家都知道),不如自己创建一个新的环境。condacreate-ntorch1.8python=3.8condaactivatetorch1.8pipinstalldl-translate使用官方指南中给出的代码,只需四行即可完成翻译,非常方便:importdl_translateasdltmt=dlt.TranslationModel()#text_hi=``??????????=?????????????????????????????????????????????下载模型,可能会比较慢,因为模型支持翻译50种语言,所以模型很大,有2.3G。如果需要,我可以帮你下载并上传到百度网盘。查看模型支持的语言:比较长的段落,翻译可能会很慢,所以建议先分句,再逐句翻译。对于英文,可以使用nltk包进行分句,然后将每个句子的翻译结果合并起来进行翻译。importnltknltk.download("punkt")text="Mr.Smith去了他最喜欢的咖啡馆。在那里,他遇到了他的朋友Dr.Doe。"sents=nltk.tokenize.sent_tokenize(text,"english")#don't使用dlt.lang.ENGLISH"".join(mt.translate(sents,source=dlt.lang.ENGLISH,target=dlt.lang.FRENCH))批量翻译在翻译过程中,我们可以利用GPU并行计算Translate,调整batch\_size,当然前提是你的GPU能放得下这么多句子。...mt=dlt.TranslationModel()mt.translate(text,source,target,batch_size=32,verbose=True)这里输入的文本可以是字符串列表,也可以是单个字符串,都会给出相应的结果。性能测试因为这个模型很大,我用的GPU(2080ti)无法适配这么大的模型,所以下面的测试都是基于CPU的。如果有条件地使用GPU,速度会快很多。在测试中,我将这句话翻译了100遍以计算花费的时间:已经提出了许多技术方法来确保AI系统做出的决策是公平的,但是这些方法中很少有应用到现实世界中的设置。它的谷歌翻译对应物:已经提出了许多技术方法来确保人工智能系统做出的决策是公平的,但这些方法中很少有应用于现实世界的设置。测试所用代码:importdl_translateasdltimporttimefromtqdmimporttqdmtime_s=time.time()mt=dlt.TranslationModel(model_options=dict(cache_dir="./"))#第一次加载时速度慢time_e=time.time()time_takes=time_e-time_sprint("Loadingmodeltakes{:.2f}seconds".format(time_e-time_s))text_english="已经提出了许多技术方法来确保人工智能系统做出的决策是公平的,但很少有这些方法已经应用于现实世界的设置中。text_englishforiinrange(100)]fortintqdm(texts):mt.translate(t,source=dlt.lang.ENGLISH,target=dlt.lang.CHINESE)time_e=time.time()print("它翻译100个句子需要{:.2f}秒,平均每个句子需要{:.2f}秒。".format(time_e-time_s,(time_e-time_s)/100))测试结果:可以看到,上传模型花费了将近一分半的时间,翻译一句话有27个词在英语中,大约需要4秒,这个时间很大程度上取决于句子的长度。虽然与谷歌翻译相比翻译结果不自然,但对于一款可以离线使用的翻译器来说已经足够好了。参考链接dl-translate:https://github.com/xhlulu/dl-translate用户指南:https://xinghanlu.com/dl-translate/mBART50型号:https://huggingface.co/facebook/mbart-large-50-many-to-many-mmt:MultilingualTranslationwithExtensibleMultilingualPretrainingandFinetuning背后的论文写在最后:如果你觉得这篇文章对你有帮助,请点赞评论支持我,谢谢!我的公众号:算法小哥Chris,欢迎撩!