高并发汉英信息抽取系统的设计与实现

2019-08-23 05:34张少迪艾山·吾买尔郑炅石刚
现代电子技术 2019年16期
关键词:汉英调用短语

张少迪 艾山·吾买尔 郑炅 石刚

摘  要: 随着大数据时代的来临,如何从海量数据中抽取出最有效的信息成为人们最迫切的需要。为了能够在大数据的环境下更好更快地进行汉英文本的信息抽取,文中采用Python编程语言,Django+uWSGI+Nginx框架,基于TextRank的图排序算法实现汉英文本信息抽取系统。该系统包含文本关键词提取,文本关键短语提取以及文本摘要提取。测试结果表明,该系统能够实现大规模数据的高并发稳定调用,在兼顾抽取质量的同时,还能实现超高效率的信息抽取,具有很好的实际应用价值。

关键词: 大数据; 高并发; 信息抽取; TextRank; uWSGI; Nginx; Django

中图分类号: TN912.34?34; TP391                   文献标识码: A                  文章编号: 1004?373X(2019)16?0104?04

0  引  言

随着互联网的飞速发展,大数据时代已经来临,普通民众们面对海量的信息,往往只能了解所关注信息中很小的一部分,这样会让很多民众错失很多感兴趣的信息,也会让很多信息失去其应有的价值。因此,如何使用户能够快速地发现自己所需要的信息,减少不必要的时间花费,也让一些信息能够顺利地被其受众找到,实现其应有的价值成为了学者们研究的重要课题。然而通过人工提炼文本关键词、关键短语、摘要的时间成本消耗过大,人们往往需要通读整篇文章,并领会大致的意思才能总结和发现足以概括整篇文本的信息,因此信息自动抽取[1]的需求也就变得越发迫切。

汉语和英语作为全世界范围内使用人数最多的两种语言,对于信息抽取的需求也相对更加迫切,这也极大地推动了相当一部分人去从事汉语和英语信息抽取相关技术的研究。通过这些年的研究,已经有很多比较成熟的算法被提出,如Taeho Jo提出一种基于KNN的表格关键字提取方法[2],黄小江等人提出基于协同图排序的对比新闻自动摘要提取方法[3],何国万等人提出一种基于领域主题词表的网页关键词提取方法[4],朱泽德等人提出一种基于LDA模型的关键词抽取方法[5],北京大学的万小军等人构建的PKUSUMSUM系统[6]以及CTSUM系统[7]也对文档摘要提取的发展起到了较大的作用。近年来,随着深度学习的盛行,基于深度学习的信息抽取方法也逐渐得到了发展,Zhang Yong等人提出一种基于卷积序列的深度关键词生成模型[8],洪冬梅提出一种基于LSTM的自动文本摘要提取技术[9],王炜提出一种基于深度学习的自动文摘提取技术[10]。

本文选择在信息抽取领域中较为成熟和稳定的TextRank算法[11]来作为本系统的核心算法,Django+uWSGI+Nginx作为框架,在面对大规模的数据以及高并发的调用时有着非常出色的表现,不仅速度方面能满足需要,而且在质量方面也不逊色于其他开源的系统,关键词抽取,关键短语抽取,文本摘要抽取的准确率分别达到了0.43,0.43和0.41。

1  信息抽取系统相关原理

1.1  TextRank

TextRank算法的思想来源于Google的网页排名算法PageRank。它是一种基于图模型的排序算法。该算法主要用于关键词抽取、短语抽取、摘要抽取等工作。TextRank算法在进行运算时,首先把文本分割为单词或句子,然后将这些单词或句子构建为图模型,最后利用投票机制来对其进行排序。此外,与LDA[12],HMM[13]等模型不同的是,TextRank算法只需要单篇文档就可以实现关键词、短语、摘要的提取,不需要进行训练,所以相对更加简洁和高效。TextRank算法的模型可以表示为一个有向有权图G=(V,E),由点集合V和边集合E组成,E为V×V的子集。TextRank算法的公式为:

[WS(Vi)=(1-d)+d·Vj∈In(Vi)wjiVk∈Out(Vj)wjkWS(Vj)] (1)

式中:[WS(Vi)]表示点[Vi]的TextRank值;d为阻尼系数,是常置于0~1之间的一个常数,通常取0.85;wji为图中任意两个点[Vi],Vj之间边的权重;In([Vi])为指向点[Vi]的点的集合;Out([Vi])则为点[Vi]所指向的点的集合。使用TextRank算法计算图中各个点的得分时,需要先给图中的点指定任意的初值,并递归计算直至收敛;然后将结果按照倒序排序,选取前N个值作为候选关键词。

1.2  Django+uWSGI+Nginx框架

Django是基于Python的一种Web[14]应用框架,采用经典的MVC[15]框架模式。它最初是源于一个在线的新闻Web站点,于2005年时以开源的形式发布出来,近年来一直得到广泛的使用。在实际项目中,Django虽然有简便、快速、APP可插拔等优点,但是在并发性方面表现却不太良好,所以在较大的项目中通常不单独使用。

uWSGI是一种实现了WSGI协议、uWSGI協议以及HTTP协议的Web服务器。它具有快速、自我修复以及开发人员和系统管理员友好等优点,由于uWSGI是完全采用C语言编写的,所以其也具有效率高和性能稳定的特点。Nginx是一个高性能的HTTP和反向代理服务,它有着许多非常优越的特性,不仅能够作为Web服务器,还能够作为负载均衡服务器以及邮件代理服务器,无论作为何种服务器,它的性能和速度都能令人满意,本系统主要用Nginx作为负载均衡服务器。本系统采用Django+uWSGI+Nginx框架。uWSGI可以使服务所支持的并发量更高,而且也更方便管理多线程,可以更好地发挥多核的优势;此外,还能提升性能,因为uWSGI协议比WSGI协议更有优势。而Nginx作为反向代理服务可以根据服务器的负载情况,动态地将请求交给不同的Web服务器,从而降低单个服务器的压力,让服务的调用更加稳定和高效。

2  信息抽取系统的设计与实现

2.1  系统流程

本系统使用经典的服务器?客户端形式,由客户端向服务器发送请求,并发送JSON格式的请求数据,服务器接收到客户端传递过来的请求后,获取并解析JSON格式的数据。之后通过解析出的数据调用客户端所请求的功能模块的算法,得到结果后将结果重新封装成为JSON格式的数据,并通过回调函数将数据返回给客户端,完成该次客户端的调用请求。具体的实验流程见图1。

文本的内容、语言类型、任务类型、用户认证ID以及返回的数据类型皆由客户端封装为JSON格式发送给服务器端的总接口,具体如表1所示。

2.2  系统功能

本系统的主要功能设计如下:

1) 具有关键词抽取功能,并且可以针对汉英双语的特点进行不同的处理来实现对其关键词的抽取。此外,抽取关键词的个数可以根据文本信息量的大小自动进行判定抽取关键词的个数。

2) 具有关键短语抽取功能,可以识别所抽取的关键词在原文中是否相邻,如相邻则可组合成为关键短语。

3) 具有文本摘要抽取功能,可以抽取文本中权重最高的3句话作为文本的摘要,当所抽取文本中的句子小于3句时,默认输出全文为摘要句。

4) 通过uWSGI+Nginx+Django框架可以解决Python多线程调用表现不好的情况,实现高并发的多线程调用。

2.3  调用示例

输入的JSON格式的数据为:{ “text”:“会议指出,矿产资源是国民经济和社会发展的重要物质基础,也是实现现代化工业建设的重要保障,矿产资源保护与合理开发利用事关现代化建设全局。”, “lang”:“zh?CN”, “task”:“kw”, “key”:“user”,“format”:“JSON”}

返回的JSON格式的数据为:{“code”: 200, “data”: [“实现现代化” “合理开发利用”“矿产资源保护”“现代化建设”“国民经济”]},code值为状态码,200表示此次请求成功,0为失败。

3  实验结果与分析

为了验证汉英信息抽取系统的性能,本文设置了多组实验从系统的准确性、并发性等方面对该系统进行测试。

3.1  实验环境

本实验所使用的主要硬件配置如下:CPU E5?2690 V4@2.60 GHz,内存为500 GB,操作系统使用的是Centos 7.2,编程语言采用Python 3.5.2,接口采用Django+uWSGI+Nginx框架。

3.2  系统准确性测试

系统的准确性测试方面采用准确率P(Precision)、召回率R(Recall)和F1?score的方式来对系统的关键词抽取、关键短语抽取和摘要抽取进行评测。

[P=Correct WordCompute Word] (2)

[R=Correct WordAll Correct Word] (3)

[F1-score=2PRP+R] (4)

式中:Correct Word为该文本中正确的关键词;ComputeWord为该文本中系统提取的所有关键词;AllCorrectWord为人手工标注的所有关键词。测试的文本为人工标注的50篇新闻文本,其中每篇文本手工标注10个关键词以及5个关键短语,摘要句的数量根据文本的长度来决定。在50篇文本中共选出500个关键词,250个关键短语以及181句文本摘要,使用上述的三个指标对该系统的性能进行测试。此外,采用开源工具HanLP的关键词提取和短语提取以及开源工具BOSON的摘要提取作为BaseLine,与本系统采用的算法进行一系列的对比。实验结果如表2所示。

从表2可以看出,本系统的三个功能在准确率方面较开源的工具来说也有着一定幅度的提升,关键词提取在召回率方面表现得非常出色。

3.3  系统并发性测试

由于本系统需要处理大规模的数据,所以对其并发性和处理速度有着较高的要求。从天山网以及腾讯大豫网上面爬取了10 000篇中文语料和5 000篇英文语料来对本系统的速度以及并发性进行测试,中英文本信息抽取速度结果见表3、表4。

根据表3、表4可以发现,使用了Django+uWSGI+Nginx的框架后,一定范围内多线程调用的速度提升非常明显,当达到硬件的瓶颈上限之后,速度不再提升,但是系统依然十分稳定,所有的请求能够成功地返回结果。

4  结  语

本文针对汉英文本的信息抽取问题,采用基于图模型的TextRank算法,针对汉语和英语的不同特点,对文本进行处理,继而实现了汉英文本信息抽取系统。此外,采用Django+uWSGI+Nginx的框架,在保持高质量的同时,弥补了Django并发能力不足的弱点,实现了高并发的调用系统。由于要同時兼顾性能和速度,所以没有采用相对复杂的基于语义算法,所以质量方面与目前最为追求质量的算法有所差距。在未来的研究工作中,会对基于语义的算法落地到项目工程方面做进一步的研究。

注:本文通讯作者为艾山·吾买尔。

参考文献

[1] CHEN Q, JIANG Z R, BIAN J Q. Chinese keyword extraction using semantically weighted network [C]// Proceedings of 6th International Conference on Intelligent Human?Machine Systems and Cybernetics. Hangzhou: IEEE, 2014: 83?86.

猜你喜欢
汉英调用短语
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
话题链在汉英篇章翻译中的统摄作用
从目的论看环保公示语的汉英翻译
《健民短语》一则
汉英文字的幽默修辞功能浅探
利用RFC技术实现SAP系统接口通信
汉英机器翻译中的意译和直译应用