【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

前言:目前翻译都是在线的,要在C#开发的程序上做一个可以实时翻译的功能,好像不是那么好做 。而且大多数处于局域网内,所以访问在线的api也显得比较尴尬 。于是,就有了以下这篇文章,自己搭建一套简单的离线翻译系统 。以下内容采用python提供基础翻译服务+ C#访问服务的功能,欢迎围观 。
系统环境: WIN10
开发环境:VS2022 + VS CODE
开发语言环境: Python3.8 + .NET 6
以下正文:
1、由于本地环境没有python,所以先安装python有关环境先 。

【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
2、安装好以后,控制台下输入 python,进入如下终端内容,就代表安装成功了 。建议安装时候,选择自动添加到环境变量里面,这样不需要自己配置了 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
3、由于翻译功能,会使用到一些已有的模型进行计算,所以以下需要安装几个包 。第一个是pytorch, 输入 pip install torch 即可安装 。如果安装比较慢,在后面设置一个镜像,可以加速,例如此处我使用的清华的加速器:https://pypi.tuna.tsinghua.edu.cn/simple
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
4、然后安装flask: pip install flask
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
5、接着需要安装 gevent: pip install gevent
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
6、接着是 transformers
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
7、安装transformers时候,有的会自动安装sentencepiece包,有的时候不会 。如果上面查找没有,就手动安装一下:
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
8、以上包安装完毕,打开VS CODE,创建一个python语言文件
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
9、此处文件命名为 MyTranslate.py   然后引入可能所需要的包
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
10、接着,上 https://huggingface.co/Helsinki-NLP 上面,查找需要的语言翻译模型 。此处使用的离线翻译,使用的该项目下的 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
11、Models里面有上千个语言模型,选择自己需要的名称,记住就行 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
12、此处,我选了四个模型,分别是英汉/汉英  以及德汉/汉德的翻译模型 。有关代码实现如下所示 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
13、接着定义一个api接口,用于提供给外部访问(毕竟主业不是python,提供api就可以跨语言来访问该服务了) 。有关代码如下所示 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
14、VS CODE上运行程序,可以看到终端控制台上面打印出一些下载进度 。这是因为本地现在还没有模型,我们选择的四个模型,会被下载到本地来,这样下次就不需要再下载模型了 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

文章插图
15、 模型加载完毕,启动服务 。此处0.0.0.0代表本机ip都可以被访问,我们正常使用时候,本机就127.0.0.1即可;如果是局域网或者外网,那就提供真实IP即可 。
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问

经验总结扩展阅读