基于Django 的汉维人名在线翻译系统

2020-08-07 14:40西热艾力海热拉艾山吾买尔王路路
现代计算机 2020年18期
关键词:调用命名实体

西热艾力·海热拉,艾山·吾买尔,王路路

(1.新疆大学信息科学与工程学院,乌鲁木齐830046;2.新疆大学新疆多语种信息技术实验室,乌鲁木齐830046)

0 引言

命名实体主要包括人名、地名、组织机构名、时间日期、量词表达式等,表达文本关键的部分。因此,命名实体的准确翻译对原文内容的理解具有较大影响。作为文本中表达关键信息的命名实体(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 的汉语-维吾尔语人名翻译在线系统。

1 模型及开源工具介绍

1.1 机器翻译模型

本文中,使用Google 开发的基于RNN 的神经机器翻译模型GNMT[12],其由接受输入序列的编码器和产生目标语句的解码器两部分构成,模型架构图如图1 所示。编码器-解码器均由8 层RNN 组成,其中编码器的第一层用双向长短期记忆网络(Bidirectional Long Short-Term Memory,BiLSTM)组成。BiLSTM 在RNN的基础上增加输入门控单元、遗忘门控单元、记忆单元以及输出门控单元。计算公式如下公式(1-4)所示:

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

图1 GNMT模型架构图

1.2 Django Web应用框架

Django 是基于Python 语言的开源Web 应用框架。采用MTV 的框架模式,即M 表示模型(Model)映射业务对象和数据库的关系;T 表示模板(Template)将页面展示在浏览器上;V 表示视图(View)在模型和业务之间协调业务逻辑关系。结构图如图2 所示。

图2 Django结构图

2 设计与实现

设计基于Django 的汉维人名翻译服务的目的是给用户提供将汉语人名翻译为维吾尔语的服务。除此之外,考虑系统的扩建性并创造更多的应用价值,系统提供了可扩展的翻译任务接口和语言方向接口。根据需求训练翻译模型,指定语言方向就能增加翻译任务,配置过程将下一章节详细介绍。汉维人名翻译服务的效果图如图3 所示。左侧的输入框用于输入待翻译的汉语人名,点击翻译按钮之后服务接口将待翻译的文本内容发送给翻译模型,翻译模型经过大量的计算将其翻译成维吾尔文,翻译结果通过服务接口显示在翻译页面的右侧框。

图3 汉维人名翻译页面

2.1 服务接口的实现步骤

第一步:环境搭建

首先安装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 端口。

2.2 汉维人名翻译接口的调用说明

本文开发的系统是基于Django 的汉维人名翻译服务接口。任何服务接口的调用参数及返回数据类型对使用者至关重要,因此,下面详细介绍汉维人名翻译服务接口的调用参数、示例及服务接口的返回结果。具体调用信息如表1 所示,输入示例如表2 所示,服务接口返回结果如表3 所示。

表1 服务接口调用信息表

其中task 参数表示为任务类型,根据需求增加翻译任务后,新配任务代码用于调用该服务。源语言和目标语言同task 参数给不同的语言分配不同的语言代码。

表2 输入示例表

表3 返回示例表

服务接口返回结果中通过code 参数知道本次请求的状态,例如:200 表示调用服务成功,500 表示服务内部错误。根据任务特性设置不同的错误代码便于发现错误。

3 实验结果与分析

本文使用的硬件环境是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 时出现两次丢包情况,从而可知请求数量和内容过大时服务接口出现丢包现象。

4 结语

本文利用Django 作为Web 应用框架开发了汉维人名翻译系统。Django 以简单易学,高性能的特点受到了众多开发者的喜欢,因此本文简单介绍了Django服务的创建及配置。翻译模型选用基于RNN 训练的汉维人名翻译模型,并与Django 应用框架相结合实现汉维人名翻译在线系统。实验发现,汉维人名翻译模型的准确率达到了93.7%。翻译服务接口的速度达到每秒139.72 个字符。实际应用当中翻译质量和速度的要求过高,因此未来将进一步对汉维人名在线翻译任务进行探索。

猜你喜欢
调用命名实体
我国第三艘航空母舰下水命名“福建舰”
命名——助力有机化学的学习
从盐渎到盐城——盐城命名记
实体书店步入复兴期?
有一种男人以“暖”命名
2017实体经济领军者
基于Android Broadcast的短信安全监听系统的设计和实现
两会进行时:紧扣实体经济“钉钉子”
振兴实体经济地方如何“钉钉子”
利用RFC技术实现SAP系统接口通信