很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

2026-03-30 15:211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1283个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言 1. 在线翻译 + 在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻译工具的作用是利用计算机程序将一种自然语言(源语言)转换为另一种自然语言(目标语言)。

前言

1.在线翻译

在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻译工具的作用是利用计算机程序将一种自然语言(源语言)转换为另一种自然语言(目标语言)。其原理是依托海量的互联网数据资源和自然语言处理技术,在数百万篇文档中查找各种模式,以求解最佳翻译。

这种在大量文本中查找各种范例的过程称为“统计机器翻译”。由于译文是由机器生成的,因此并不是所有的译文都是完美的。这就是为什么翻译的准确性有时会因语言的不同而有所差异。

2.离线翻译

离线翻译是指在没有联网的情况下仍然可以运行翻译功能,这就需要你的本地电脑中有离线翻译包!只有有了离线翻译包,离线翻译功能才能正常使用。

一、多语言离线翻译系统

1.开发环境

  • 系统环境:WIN11
  • 开发环境:VS2022
  • 开发语言环境:Python3.9 + .NET 7

2.准备离线翻译包

离线翻译包网站:huggingface.co/Helsinki-NLP

Models里面有上千个语言模型,根据自己需要进行下载

此处,我选了二个模型,分别是英汉/汉英的翻译模型。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

3.准备python代码

# 离线翻译服务代码 import os from flask import Flask, request from gevent import pywsgi from transformers import pipeline, AutoModelWithLMHead, AutoTokenizer import warnings, requests warnings.filterwarnings('ignore') try: print('\n\n 翻译服务 Designed by:yg \n\n\n') print('正在加载翻译模型... ...') # 英文翻译成中文 # AutoModelForSeq2SeqLM.from_pretrained model = AutoModelWithLMHead.from_pretrained("Helsinki-NLP/opus-mt-en-zh") tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-zh") translation = pipeline("translation_en_to_zh", model=model, tokenizer=tokenizer) #text = "Student accommodation centres, resorts" #translated_text = translation(text, max_length=40)[0]['translation_text'] print('正在加载翻译模型... ...') # 中文翻译成英文 model_zh2de = AutoModelWithLMHead.from_pretrained("Helsinki-NLP/opus-mt-zh-en") tokenizer_zh2de = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-zh-en") translation_en2zh = pipeline("translation_zh_to_en", model=model_zh2de, tokenizer=tokenizer_zh2de) app = Flask(__name__) @app.route('/yg-translater', methods=['POST']) def translate(): mod = request.form['mod'] text = request.form['text'] if mod == 'en2zh': result = translation(text, max_length=10240)[0]['translation_text'] return result if mod == 'zh2en': result = translation_en2zh(text, max_length=10240)[0]['translation_text'] return result print('翻译服务已启动,请通过api形式访问该服务地址:127.0.0.1:16888/yg-translater') server = pywsgi.WSGIServer(('0.0.0.0', 16888), app) server.serve_forever() except: print('翻译服务存在异常... ...')

注意必须需要多安装下面包,不然会报错

pip install sentencepiece

启动程序会自动加载模型 下载的模型,会自动下载到当前用户文件夹下,具体效果如下图所示。所以如果某个服务器没有外网,也可以直接拷贝该.cache文件夹到指定服务器下面的某用户下,也可以被识别

4.调试翻译结果

打开Apifox做个接口测试,对应工具还有postman等等大家可以根据自己的喜欢选择。

1、英文译中文 Sharp tools make good work(工欲善其事,必先利其器)似乎有点不尽人意

2、中文译英文

工欲善其事,必先利其器(If you want to work well, you'll be able to use it first.)

5.Python翻译服务对接到.NET Core

Program.cs

var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //注入HttpClient builder.Services.AddHttpClient(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run();

.NET Core 注入IHttpClientFactory。然后写个简单的测试功能,直接看以下代码:

using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Diagnostics; namespace Translate.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TranslationController : ControllerBase { IHttpClientFactory _httpClientFactory; public TranslationController(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } /// <summary> /// 测试翻译 /// </summary> /// <param name="mod">模式 zh2en en2zh de2zh zh2de</param> /// <param name="text"></param> /// <returns></returns> [HttpPost] public IActionResult Test(string url,string mod,string text) { string result = string.Empty; using (HttpClient client = _httpClientFactory.CreateClient()) { try { client.Timeout = new TimeSpan(0, 0, 100); client.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0)"); client.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); FormUrlEncodedContent data = new FormUrlEncodedContent(new Dictionary<string, string>() { { "mod",mod}, { "text",text} }); HttpResponseMessage res = client.PostAsync(url, data).Result; if (res.IsSuccessStatusCode && res.StatusCode == System.Net.HttpStatusCode.OK) { result = res.Content.ReadAsStringAsync().Result; } else { result = $"访问翻译服务错误:Error"; } } catch (Exception ex) { result = "访问翻译服务错误:"+ ex.Message; } } return Ok(result); } } }

通过自带的swagger测试效果 得到结果

本文共计1283个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言 1. 在线翻译 + 在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻译工具的作用是利用计算机程序将一种自然语言(源语言)转换为另一种自然语言(目标语言)。

前言

1.在线翻译

在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻译工具的作用是利用计算机程序将一种自然语言(源语言)转换为另一种自然语言(目标语言)。其原理是依托海量的互联网数据资源和自然语言处理技术,在数百万篇文档中查找各种模式,以求解最佳翻译。

这种在大量文本中查找各种范例的过程称为“统计机器翻译”。由于译文是由机器生成的,因此并不是所有的译文都是完美的。这就是为什么翻译的准确性有时会因语言的不同而有所差异。

2.离线翻译

离线翻译是指在没有联网的情况下仍然可以运行翻译功能,这就需要你的本地电脑中有离线翻译包!只有有了离线翻译包,离线翻译功能才能正常使用。

一、多语言离线翻译系统

1.开发环境

  • 系统环境:WIN11
  • 开发环境:VS2022
  • 开发语言环境:Python3.9 + .NET 7

2.准备离线翻译包

离线翻译包网站:huggingface.co/Helsinki-NLP

Models里面有上千个语言模型,根据自己需要进行下载

此处,我选了二个模型,分别是英汉/汉英的翻译模型。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

3.准备python代码

# 离线翻译服务代码 import os from flask import Flask, request from gevent import pywsgi from transformers import pipeline, AutoModelWithLMHead, AutoTokenizer import warnings, requests warnings.filterwarnings('ignore') try: print('\n\n 翻译服务 Designed by:yg \n\n\n') print('正在加载翻译模型... ...') # 英文翻译成中文 # AutoModelForSeq2SeqLM.from_pretrained model = AutoModelWithLMHead.from_pretrained("Helsinki-NLP/opus-mt-en-zh") tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-zh") translation = pipeline("translation_en_to_zh", model=model, tokenizer=tokenizer) #text = "Student accommodation centres, resorts" #translated_text = translation(text, max_length=40)[0]['translation_text'] print('正在加载翻译模型... ...') # 中文翻译成英文 model_zh2de = AutoModelWithLMHead.from_pretrained("Helsinki-NLP/opus-mt-zh-en") tokenizer_zh2de = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-zh-en") translation_en2zh = pipeline("translation_zh_to_en", model=model_zh2de, tokenizer=tokenizer_zh2de) app = Flask(__name__) @app.route('/yg-translater', methods=['POST']) def translate(): mod = request.form['mod'] text = request.form['text'] if mod == 'en2zh': result = translation(text, max_length=10240)[0]['translation_text'] return result if mod == 'zh2en': result = translation_en2zh(text, max_length=10240)[0]['translation_text'] return result print('翻译服务已启动,请通过api形式访问该服务地址:127.0.0.1:16888/yg-translater') server = pywsgi.WSGIServer(('0.0.0.0', 16888), app) server.serve_forever() except: print('翻译服务存在异常... ...')

注意必须需要多安装下面包,不然会报错

pip install sentencepiece

启动程序会自动加载模型 下载的模型,会自动下载到当前用户文件夹下,具体效果如下图所示。所以如果某个服务器没有外网,也可以直接拷贝该.cache文件夹到指定服务器下面的某用户下,也可以被识别

4.调试翻译结果

打开Apifox做个接口测试,对应工具还有postman等等大家可以根据自己的喜欢选择。

1、英文译中文 Sharp tools make good work(工欲善其事,必先利其器)似乎有点不尽人意

2、中文译英文

工欲善其事,必先利其器(If you want to work well, you'll be able to use it first.)

5.Python翻译服务对接到.NET Core

Program.cs

var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //注入HttpClient builder.Services.AddHttpClient(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run();

.NET Core 注入IHttpClientFactory。然后写个简单的测试功能,直接看以下代码:

using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Diagnostics; namespace Translate.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TranslationController : ControllerBase { IHttpClientFactory _httpClientFactory; public TranslationController(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } /// <summary> /// 测试翻译 /// </summary> /// <param name="mod">模式 zh2en en2zh de2zh zh2de</param> /// <param name="text"></param> /// <returns></returns> [HttpPost] public IActionResult Test(string url,string mod,string text) { string result = string.Empty; using (HttpClient client = _httpClientFactory.CreateClient()) { try { client.Timeout = new TimeSpan(0, 0, 100); client.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0)"); client.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); FormUrlEncodedContent data = new FormUrlEncodedContent(new Dictionary<string, string>() { { "mod",mod}, { "text",text} }); HttpResponseMessage res = client.PostAsync(url, data).Result; if (res.IsSuccessStatusCode && res.StatusCode == System.Net.HttpStatusCode.OK) { result = res.Content.ReadAsStringAsync().Result; } else { result = $"访问翻译服务错误:Error"; } } catch (Exception ex) { result = "访问翻译服务错误:"+ ex.Message; } } return Ok(result); } } }

通过自带的swagger测试效果 得到结果