小牛翻译开源社区

  如何搭建可实用的机器翻译系统?

准备工作:

1.NiuTrans Server 工具包下载

      请根据语言方向需要,在下列工具包列表中选择一个下载,我们已将所有搭建过程中可能用到的程序集成到一个工具包中,下载地址如下:

名称 更新日期 文件大小 简介 下载
NiuTrans Server 工具包
(中译英Linux4G版)
12/25/2015 433M NiuTransServer工具包,中译英linux版。随包附带4G翻译模型。可以直接启动。 点击下载
NiuTrans Server 工具包
(英译中Linux4G版)
12/25/2015 449M NiuTransServer工具包,英译中linux版。随包附带4G翻译模型。可以直接启动。 点击下载
NiuTrans Server 工具包
(中译英Linux8G版)
12/25/2015 797M NiuTransServer工具包,中译英linux版。随包附带8G翻译模型。可以直接启动。 点击下载
NiuTrans Server 工具包
(英译中Linux8G版)
12/25/2015 760M NiuTransServer工具包,英译中linux版。随包附带8G翻译模型。可以直接启动。 点击下载

      其他应用工具请到 “资源下载“ 页面中下载。

2.运行环境准备

      搭建本系统之前,请您确保您的电脑上已经安装了Perl,本系统所需Perl版本至少为5.5.0
      Perl下载地址:https://www.perl.org/get.html

  • 开始搭建:(这里使用中译英翻译系统作为演示,linux版本下的其他工具包操作一致)

  • Step 1、建立一个新的账号

          打开终端,使用root登录建立一个新的账户,运行如下命令根据提示操作:

          $> useradd niutrans //建立一个新的账户
          $> passwd niutrans //设置账户密码

          PS:该步骤主要是防止其他环境变量冲突,导致翻译系统不能够正常运行。如果您是一个骨灰级的Linux用户,可以忽略该步骤。

  • Step 2、解压工具包,安装

          FTP上传压缩包到该账户下,打开终端,找到工具压缩包,请确认压缩包所在磁盘可用空间足够(默认情况下10G以上硬盘)。运行如下命令:

          $> tar zxvf NiuTransServer_v1.1.0_zh2en_x64_linux.tar.gz
          $> cd NiuTransServer_v1.1.0_zh2en_x64_linux/service/
          $> sh ./install.sh
          $> source ~/.bashrc

  • Step 3、启动机器翻译系统

          在 NiuTransServer_v1.1.0_zh2en_x64_linux/service/ 目录下找到start.service.sh(Shell脚本文件),运行该脚本文件即可启动机器翻译系统。命令如下:

          $> ./start.service.sh

          当运行出现下列提示即代表启动成功。如遇异常请访问 “FAQ常见问题” 页面查看解决办法!

  • 功能应用:

  • ●在线翻译功能

          当机器翻译系统启动成功后,就可以打开浏览器输入如下网址:

          http://127.0.0.1:1517/niutrans/

          访问在线翻译页面,使用翻译功能。其中红色IP地址可以更换为实际IP地址,这样局域网内其他人都可以访问使用翻译服务。
          界面截图如下:

  • ●翻译API功能

          URL:

          http://127.0.0.1:1517/niutrans/translation

          访其中红色IP地址可以更换为实际IP地址,这样局域网内其他人都使用翻译API功能。

          Header:

          无特殊要求。

          Body:

    key
    value
    描述
    from zh 源语言
    to en 目标语言
    src_text 待翻译字符串 该字段必须为UTF-8编码,当以GET方式调用API时,需要进行urlencode。

          您可以通过GET或者POST方式提交待翻译的内容。其中“zh”,“en”均是系统中定义的语言种类标示符详见 “FAQ常见问题” 页面。

          响应:

          UTF-8编码的标准JSON字符串

          URL示例:

          http://127.0.0.1:1517/niutrans/translation?from=zh&to=en&src_text=你好

          Body示例:

          from=zh&to=en&src_text=你好

          响应示例:

          正常示例 {"tgt_text":"hello","to":"english","from":"chinese"}

          异常示例 {"to":null,"error_code":"2000","from":null,"error_msg":"Input is empty","src_text":null}

          响应字段说明:

    key
    描述
    from 源语言
    to 目标语言
    src_text 待翻译字符串
    tgt_text 翻译结果字符串
    error_code 错误代码
    error_msg 错误信息

          java 代码示例:

    private static class UTF8PostMethod extends PostMethod {		//url的utf8编码转换
    	public UTF8PostMethod(String url) {
    		super(url);
    	}
    	public String getRequestCharSet() {
    		return "UTF-8";
    	}
    }
    public String run(String textString) throws Exception {		//参数:待翻译字符串;返回翻译结果
    	String result = "";
    	HttpClient client = new HttpClient();
    	PostMethod method = null;
    	method = new UTF8PostMethod("http://129.0.252.151:8080/NiuTransServer/translation?from=en&to=zh ");
    	method.setParameter("src_text", textString);
    	client.executeMethod(method);
    	String str = method.getResponseBodyAsString();
    	JSONObject json = JSONObject.fromObject(str);
    	if (str.indexOf("tgt_text") != -1)
    		result = json.get("tgt_text").toString();
    	return result;
    }
    
    						

          perl 代码示例:

    use strict;
    use Encode;
    use HTTP::Request;
    use HTTP::Response;
    use HTTP::Headers;
    use HTTP::Cookies;
    use HTTP::Request::Common qw(POST);
    use LWP;
    use LWP::UserAgent;
    use URI::URL;
    use URI::Escape;
    use HTML::LinkExtor;
    
    sub translateByNiuTransServer//perl函数,参数:待翻译字符串、请求超时时间;返回翻译结果
    {
              my $browser = LWP::UserAgent->new;
              $browser->timeout( $_[ 1 ] );
              my $srcSentence = $_[ 0 ];
    
              $srcSentence =~ s/%/%25/g;
              $srcSentence =~ s/\+/%2B/g;
              $srcSentence =~ s/ /%20/g;
              $srcSentence =~ s/\//%2F/g;
              $srcSentence =~ s/\?/%3F/g;
              $srcSentence =~ s/#/%23/g;
              $srcSentence =~ s/&/%26/g;
              $srcSentence =~ s/=/%3D/g; 
      
              my $url = "http://127.0.0.1:1517/niutrans/translation?from=zh&to=en&src_text=$srcSentence";
              my $agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windws NT 5.1)";
              $browser->agent( $agent );
    
              my $response = $browser->post( $url );
              return "" unless $response->is_success;
    
              my $responseContent = $response->content;
    
              $responseContent =~ s/[\r\n]//g;
              
    
              return $responseContent;
    }

  • ●利用自有数据训练翻译模型

          如果您对于机器翻译有一定了解,并且有一定的编程能力那么可以访问 “利用自有数据训练翻译模型” 页面,自行训练模型搭建系统。

  • ●更多应用工具

          更多应用功能请到 “资源下载“ 页面下载使用,压缩包中附带有详细的使用说明,这里就不在罗列了。


            PS:在使用过程中如果您遇到任何问题或者有什么建议,可以加入我们的QQ群(451967838)或发送邮件(niutrans@mail.neu.edu.cn),我们将第一时间给予答复。