西熱艾力·海熱拉,艾山·吾買爾,王路路
(1.新疆大學信息科學與工程學院,烏魯木齊830046;2.新疆大學新疆多語種信息技術實驗室,烏魯木齊830046)
命名實體主要包括人名、地名、組織機構名、時間日期、量詞表達式等,表達文本關鍵的部分。因此,命名實體的準確翻譯對原文內容的理解具有較大影響。作為文本中表達關鍵信息的命名實體(Named Entity,NE)具有一定的組成規范,而且往往包含未登錄詞(Out-of-Vocabulary,OoV)和縮略詞,這就給翻譯帶來了極大的難度,并且相對于句子來說,實體翻譯對準確性和規范性有更高的要求。命名實體翻譯有其自身的特點,這使得實體翻譯與句子翻譯之間存在著很大的差異,因此,將命名實體翻譯作為一個獨立于句子翻譯的問題進行研究是很有必要的。已有研究表明,對命名實體進行單獨翻譯處理后,可以使機器翻譯的BLEU(Bilingual Evaluation Understudy)值明顯提高。
命名實體翻譯概念提出以來眾多語言上獲得了相關的研究。命名實體中人名、地名、機構名中,人名和機構名是變化較大,而且不斷出現新的詞匯的部分。人名與機構名差異也比較大,所以不少國內外學者們開展了人名翻譯的研究[1-9],提出了針對具體語言的規則、統計或多種策略融合的方法。如,日語-英語[1,10]、漢語-英語[2-3]等語言對上紛紛開展相關研究工作。皺皮等人[4]對英漢人名的音譯方法進行詳細的比較,雖然取得了不錯的效果。Zhang 等人[5]采用兩種方式的音節切分算法對英語音節映射到漢字提高了模型的準確率。于恒等人[6]將多粒度的英文切分利用詞圖融合并利用層次短語模型解碼提高了模型的翻譯性能。
2010 年衣馬木艾山·阿布都力克木等人[11]研究維吾爾語人名漢文音譯規則,提出基于規則的維吾爾人名漢文機器翻譯算法。2017 年Murat 等人[8]提出自動學習人名語義信息的方法,對維吾爾族人名翻譯漢語的任務中引入了語義信息。
隨著基于神經網絡的機器翻譯方法取得顯著的提升,國內外學者們開始使用神經網絡對人名進行翻譯。本文中,使用基于注意力機制的循環神經網絡(Recurrent Neural Network,RNN)模型實現了漢語-維吾爾語人名翻譯模型,并設計與實現了基于Django 的網絡服務接口,提供漢語-維吾爾語、維吾爾-漢語機器翻譯系統、關鍵詞翻譯系統等使用。為了演示系統,設計與實現了基于Django 的漢語-維吾爾語人名翻譯在線系統。
本文中,使用Google 開發的基于RNN 的神經機器翻譯模型GNMT[12],其由接受輸入序列的編碼器和產生目標語句的解碼器兩部分構成,模型架構圖如圖1 所示。編碼器-解碼器均由8 層RNN 組成,其中編碼器的第一層用雙向長短期記憶網絡(Bidirectional Long Short-Term Memory,BiLSTM)組成。BiLSTM 在RNN的基礎上增加輸入門控單元、遺忘門控單元、記憶單元以及輸出門控單元。計算公式如下公式(1-4)所示:

除此之外,引入注意力機制使得模型更高效地處理長句子,計算注意力公式如下公式(5)所示。


圖1 GNMT模型架構圖
Django 是基于Python 語言的開源Web 應用框架。采用MTV 的框架模式,即M 表示模型(Model)映射業務對象和數據庫的關系;T 表示模板(Template)將頁面展示在瀏覽器上;V 表示視圖(View)在模型和業務之間協調業務邏輯關系。結構圖如圖2 所示。

圖2 Django結構圖
設計基于Django 的漢維人名翻譯服務的目的是給用戶提供將漢語人名翻譯為維吾爾語的服務。除此之外,考慮系統的擴建性并創造更多的應用價值,系統提供了可擴展的翻譯任務接口和語言方向接口。根據需求訓練翻譯模型,指定語言方向就能增加翻譯任務,配置過程將下一章節詳細介紹。漢維人名翻譯服務的效果圖如圖3 所示。左側的輸入框用于輸入待翻譯的漢語人名,點擊翻譯按鈕之后服務接口將待翻譯的文本內容發送給翻譯模型,翻譯模型經過大量的計算將其翻譯成維吾爾文,翻譯結果通過服務接口顯示在翻譯頁面的右側框。

圖3 漢維人名翻譯頁面
第一步:環境搭建
首先安裝Python 環境,其次打開命令行窗口通過pip 命令安裝Django 包。
第二步:創建基于Django Web 框架的項目
打開命令行窗口輸入命令django-admin.py startproject zh2uyNameTrans 創建漢維人名翻譯項目,其中zh2uyNameTrans 指的是項目名稱。第三步:創建應用
進入第二步所創建的項目的主目錄輸入命令python manage.py startapp personNameTrans 來在當前項目中創建一個漢維人名翻譯應用,其中person-NameTrans 指的是應用名稱。隨后將已訓練好的基于循環神經網絡的漢維人名翻譯模型、數據和相關代碼放入創建好的應用目錄中。
第四步:注冊應用
打開所創建的目錄下的settings.py 文件,INSTALLED_APPS 里面注冊第三步創建的應用名稱personNameTrans。
第五步:綁定URL
打開所創建的目錄下的urls.py 文件,urlpatterns 里面綁定URL 與調用的函數,path(r'trans',views.trans),其中personNameTrans 指的是URL,views.trans 指的是調用的函數。
第六步:實現服務調用函數
打開第四步創建的應用下的views.py 文件實現第五步所綁定的trans 函數。根據服務接口設計設置接口的輸入參數和返回數據。
第七步:啟動服務
打開命令行窗口進入Django 項目主目錄,輸入命令python manage.py runserver 啟動Django 服務,默認使用8000 端口。
本文開發的系統是基于Django 的漢維人名翻譯服務接口。任何服務接口的調用參數及返回數據類型對使用者至關重要,因此,下面詳細介紹漢維人名翻譯服務接口的調用參數、示例及服務接口的返回結果。具體調用信息如表1 所示,輸入示例如表2 所示,服務接口返回結果如表3 所示。

表1 服務接口調用信息表
其中task 參數表示為任務類型,根據需求增加翻譯任務后,新配任務代碼用于調用該服務。源語言和目標語言同task 參數給不同的語言分配不同的語言代碼。

表2 輸入示例表

表3 返回示例表
服務接口返回結果中通過code 參數知道本次請求的狀態,例如:200 表示調用服務成功,500 表示服務內部錯誤。根據任務特性設置不同的錯誤代碼便于發現錯誤。
本文使用的硬件環境是2 個GPU 為NVIDIA RTX 2080ti 11GB,CPU 位Intel Core i5 9400F,6 核,內存為32GB。使用的軟件環境如下:Ubuntu 18.04 版本的64 位操作系統,Python 3.6,TensorFlow 1.2 以及Django 3.0 版本。
本文利用一千條人名對漢維人名翻譯模型進行測試,準確率達到93.7%,然后將其模型應用到設置的基于Django 的漢維人名翻譯服務接口。為了準確驗證本文構建的服務接口的翻譯速度和并發量兩個重要性能,本文使用長度為2 到9 個漢字的1 萬條人名,共31391 個字符進行測試服務接口的并發量和速度,其中batch size 為每個線程單次處理的人名個數。具體的測試結果如表4 所示。

表4 漢維人名翻譯服務接口測試結果
表4 的實驗結果可以看出隨著并發線程數量的增加,翻譯服務接口的響應時間縮短,翻譯速度更快。其中線程數量為8,batch-size 為100 時翻譯模型的翻譯速度達到每秒139.72 個字符。線程數量為256 時出現兩次丟包情況,從而可知請求數量和內容過大時服務接口出現丟包現象。
本文利用Django 作為Web 應用框架開發了漢維人名翻譯系統。Django 以簡單易學,高性能的特點受到了眾多開發者的喜歡,因此本文簡單介紹了Django服務的創建及配置。翻譯模型選用基于RNN 訓練的漢維人名翻譯模型,并與Django 應用框架相結合實現漢維人名翻譯在線系統。實驗發現,漢維人名翻譯模型的準確率達到了93.7%。翻譯服務接口的速度達到每秒139.72 個字符。實際應用當中翻譯質量和速度的要求過高,因此未來將進一步對漢維人名在線翻譯任務進行探索。