【Python+C#】手把手搭建基于Hugging Face模型的離線翻譯系統,并通過C#代碼進行訪問

前言:目前翻譯都是在線的,要在C#開發的程序上做一個可以實時翻譯的功能,好像不是那么好做 。而且大多數處于局域網內 , 所以訪問在線的api也顯得比較尷尬 。于是,就有了以下這篇文章,自己搭建一套簡單的離線翻譯系統 。以下內容采用python提供基礎翻譯服務+ C#訪問服務的功能 , 歡迎圍觀 。
【【Python+C#】手把手搭建基于Hugging Face模型的離線翻譯系統,并通過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#代碼進行訪問

文章插圖
16、下載的模型,會自動下載到當前用戶文件夾下,具體效果如下圖所示 。所以如果某個服務器沒有外網,也可以直接拷貝該.cache文件夾到指定服務器下面的某用戶下,也可以被識別 。
【Python+C#】手把手搭建基于Hugging Face模型的離線翻譯系統,并通過C#代碼進行訪問

文章插圖
17、打開postman,做個簡單的測試 ??梢钥吹?,服務是可以被成功訪問的,說明代碼可以跑,問題不是很大 。
【Python+C#】手把手搭建基于Hugging Face模型的離線翻譯系統,并通過C#代碼進行訪問

文章插圖
18、換一種翻譯模式再試一下:
【Python+C#】手把手搭建基于Hugging Face模型的離線翻譯系統,并通過C#代碼進行訪問

文章插圖
19、再試一試另類點的 , 看看效果:

推薦閱讀