小牛翻譯開源社區

  如何搭建可實用的機器翻譯系統?

準備工作:

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下載地址:http://uv6c.zhongte62147.cn

  • 開始搭建:(這裡使用中譯英翻譯系統作為演示,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),我們将第一時間給予答複。