乔世权 戴继勇
摘 要:为了帮助电话人工客服座席提供不间断地、质量稳定的服务,有必要研发智能查号引擎。基于最长公共子序列算法和最长公共子元素序列算法的研究,提出了短文本相似度计算算法,以提高查号的准确性,并以此为基础,设计出智能查号搜索引擎系统及其实现方法。考虑到实际需求,通过自然语言处理中的分词、简称替换、同义词替换、构建停用词表等,对数据进行预处理;通过基于HowNet和同义词词林的相似计算,完成进一步的数据处理;对外提供遵循REST规范的API接口。实验表明,智能查号引擎的设计可行,具有较好的业务处理能力,可满足用户需求;同时,也存在一些问题,有待于进一步的改进。智能查号引擎可以提供24 h不间断服务,相对于人工服务,具有更高的查号效率和更稳定的高质服务,可为智能电话客服的发展提供借鉴。
关键词:计算机信息管理系统;文本相似度;分词;停用词;同义词;查号引擎
中图分类号:TP391 文献标志码:A
文章编号:1008-1542(2018)03-0282-07
当今是一个高度信息化的时代,目前搜索引擎可以为大家提供方便的信息查询功能,但是在查询电话号码方面还有其不足之处,例如:网络查询时会得到大量的相关信息,需要人工挑拣需要的电话信息,并且在查询信息中,还可能存在诈骗电话。因此拨打查询电话是获取准确单位电话的最有保障的方式。由于人工电话查询存在着单任务、速度慢并且不能提供不间断、稳定质量服务的特点,研发基于自然语言的对话引擎是很有必要的。对话引擎针对用户提出的问题返回的不是一些相关的信息列表,而是一个精准的答案,从而能够省去用户从信息列表当中筛选信息所耗费的时间和精力。
目前针对智能客服方面的研究主要集中在人机对话[1]、智能服务机器人[2]等领域,研究内容大部分是对自然语言的理解和处理上,而针对电话查询业务的智能客服研究甚少。本文利用文本相似度算法,通过数据预处理、停用词表和同义词库构建完成实现智能查号的搜索引擎设计。
1 数据预处理
当用户表达一种需求的时候可能存在多种描述形式,每种描述形式呈现在文本中就会存在差异,例如“河北科技大学的地址”和“河北科技大学在哪儿”,虽然表述方式不同,但是表达的都是同一种意思,将同一语义的不同表述方式归化为同一种表述方式即为语义归一化,本文采用了简称替换和同义词替换两种语义归一化操作,同时借助设定的规则模板,完成对核心查询词的抽取工作。
1.1 分词与简称替换
本文采用开源的分词工具:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注并完成主要分词步骤[3]。例如,给定一个问题“帮我查询一下河北科技大学教务处的电话”,将“科技大学”和“教务处”人工标注为自定义词典,对其进行分词的结果为{帮/v}{我/n}{查询/v}{一/num}{下/quant}{河北/ns}{科技大学/user-defined}{教务处/user-defined}{的/uj}{电话/n}。其中“/*”代表词性,“/user-defined”为自定义词性。
简称,是指抽出原词语中的共同部分,或概括原来几个词语表示的事物的共性[4]组成的短语。简称更多的时候会被用在口语化的表达中。在问答系统中,用户输入的简称表达不仅会省略想要表达的部分语义,甚至会因为细小的差别而导致语义理解的错误。所以在对用户输入文本做相似度计算的时候,将简称替换为全称是很有必要的。
表1为通过对日志和原始数据的分析整理得出部分简称替换数据,其中简称栏为用户常用的简称表达方式,全称为对应的全称表达方式。
简称替换机制是用在对话引擎的文本输入部分,用在停用词处理之前,通过将用户的输入与简称替换表中的简称进行匹配,匹配成功则替换为对应的简称。
1.2 基础词法分析
基础词法是对用户输入的中文文本的处理程序,主要是依据已有的基础词库和自定义词库对用户输入进行处理。该部分对中文的处理都是基于语音识别结果较好的中文词语进行,例如“大学”“公安局”“酒店”“宾馆”等词语都是用户能够表达清楚并且语音识别效果较好的词汇,依据这些能够识别准确的词汇,实现了触发词的机制,该机制的思想是:当用户输入了能够代表其语义目的的词汇时,就会自动触发该机制,并在给用户的回复当中优先回复该触发词对应的单位信息。
触发词机制的数据是以文件的形式存储在TXT文檔中,有3列数据并以空格隔开,存储结构如表2所示。
其中触发词的定义规则为每一列之间用空格隔开,当有多个触发词时使用“|”隔开,当需要多个触发词同时生效才触发时,使用“*”号隔开,其中“*”号匹配任何长度的任何字符串。例如当用户输入“帮我查下科大教务处的电话”或者“帮我查下科技大学”时,就会触发“科*大”这个触发词,并在系统回复当中优先回复这条电话号码。
1.3 短文本相似度计算算法
文本相似度是两个文本之间相似匹配程度的重要参考指标[5],目前大多数的文本相似度算法[6]主要是基于统计和语义的方法,其相似度对象主要是中文文字或者词语,而由于本文研究课题的特殊性,提出基于拼音最长公共子序列的文本相似度计算算法。
1.3.1 最长公共子序列算法
由式(1)可计算得出两个字符串的最长公共子序列长度。
1.3.2 最长公共子元素序列算法
1.3.3 短文本相似度计算
对话引擎的输入文本是电话语音识别成文本的结果,而电话语音识别成文本的效果往往并不是很好,一方面原因是电话语音采集的质量本身就比大多数电子设备的语音采集质量差,另一方面的原因是不同地区用户,乃至同一地区不同用户的口音也会存在差别,口语的语音转文本会受用户普通话标准程度的影响。通过测试发现,虽然语音转写的大多数汉字都不准确,但是大致的音还是能识别对的,即同音不同字。为了解决这个问题,本文采取的是将汉字文本转写为拼音后的文本相似度计算,其中参与相似度计算的文本的基本单位是一个汉字或者数字或者英文字母的拼音表示,以下所有提到参与相似度计算的文本的基本单位都是一个拼音字符串。
在数据库中,用于信息检索的字段为3~15个字符的单位名称,而通过对用户输入文本的预处理,最终形成大概5~20个字符的文本,通过计算用户输入的内容与数据库中单位名称字段文本的相似度,给出相似度的排序列表并最终选出一个最优解。基于这样的需求和对前两节内容的研究,本文提出了一种文本相似度计算方法:文本的相似度与两个文本的长度成反比关系,与两个文本的最长公共子序列的长度成正比关系。由此可得出公式
1.4 停用词表及同义词库构建
1.4.1 停用词表构建
正确理解用户输入问题的语义是影响对话引擎效果好坏的关键,而由于用户输入内容的不可控性,除了能正确表达用户意图的文本,还会有许多的干扰因素,称之为噪音词[16]。文本预处理就是在通过技术手段消除噪音词、提取核心语义文本的过程。
停用词(Stop Word)[17-18]是指在进行语义理解或者相似度计算当中,在输入的文本当中出现频率很高但是在信息检索的时候几乎不起任何作用甚至会起到干扰作用的词语,如“的”、“啦”、“呀”等词语。但是在对话引擎或者问答系统当中,停用词并不是唯一的,停用词会因为其应用场景或者问题的不同而动态的改变[19]。
本文构建的停用词表分为绝对停用词和相对停用词。
1) 绝对停用词是不考虑停用词所在文本中的上下文语义必须过滤的停用词;
2) 相对停用词是需要考虑停用词在上下文语境中的成分、位置的停用词,只在特定语境下才会触发该停用词。
在构建停用词的时候本文引入了熵计算[20]的概念,熵计算是一个基于词语出现的平均信息量,对词的有效性进行计算
在同一个文本当中,P(Wi|W)为贝叶斯公式原理,表示词语W出现的情况下,Wi出现的概率。通过对多个文本进行分词统计词频的计算,可得出某一停用词出现的情况下,其他词语出现的概率,从而可以得出在同一个文本当中两个词之间的语义关联。
其中原始数据进行分词处理是对原始名称、地址处理,这两个字段的内容代表着该单位名称语义的核心内容,此外,由于原始数据和日志数据的不规范性,最终确定停用词表的规模在100个词语以后,对于最终停用词表的确定需要一定工作量的人工标注以确保准确性。
1.4.2 同义词库的构建
同义词是指词汇意义相同或者相近的词语。一般情况下同义词都会是两个词语中间有一个或者几个字重复或者重音的,例如“地址”和“地点”,“发现”和“发觉”。同义词所表达的基本意义相同,会因不同的表达习惯和场合而有所不同。
词语相似度计算在许多领域如信息检索、信息抽取、问答系统、词义消歧、多文档文摘系统等都有着非常广泛的应用。它可以表示为两个词语在同一个文本当中可以相互替换而不改变文本原来含义的程度。由于网络资源的不规范性,需要对一些差别比较大的同义词进行过滤。本文采取的是以数据分词结果作为主词通过网络爬虫的方式构建同义词库,并通过计算词语相似度的方式对同义词的近义程度进行数据化表示。
同义词替换[21]机制是用在停用词替换之后,同义词替换过程流程图如图2所示。将用户输入进行分词和词性标注之后,通过这两个属性分别与同义词库当中的同义词节点进行比对,首先与主词进行比对,匹配成功则不进行任何操作循环进行下一个词语的匹配;与主词匹配不成功则与副词进行匹配,匹配成功则替换成对应的主词,匹配不成功则进行下一个词语的匹配,直到同义词替换完成返回替换后的结果。
2 智能查号引擎设计
2.1 单位信息查询
单位信息查询是基于文本相似度的计算和排序机制实现的,其中相似度的计算包括汉字和拼音相似度计算。文本相似度的计算会将用户的问句通过文本研究的相似度计算算法与语义分析得出的场景知识库中的数据一一进行计算,其中计算的两个文本相似度的因素主要有3个,如表3所示。
在汉字的语义相似度计算当中,如果经过分词之后触发了触发词机制,则会把触发词对应的单位名称的
名称相似度、地址相似度和部门相似度全部设为最
高值,在系统回复的过程中优先回复本条信息。
对于单位名称的相似度计算是使用基于主文本长度的相似度计算算法,对于地址和部门信息的相似度计算是使用基于关键字匹配的相似度计算算法。
计算完相似度之后,會根据每条数据的单位名称相似度、地址信息相似度和部门信息相似度对已有的场景知识库数据进行排序,并得出最优解。对最优解答案的排序规则如下:
1)通过对名称相似度的计算,按照单位名称的相似度评分进行排序,取前若干条中单位名称相同但部门和地址不同的数据得到一个通过单位名称评分排序的列表;
2)在经过第1次排序之后加入地址评分的考虑因素进行二次排序,即相同单位名称的情况中,地址评分较高者,将排序的位置调整到所在单位中最靠前的位置;
3)再加入部门评分的考虑因素进行第3次排序,在第2次排序结果的基础上,单位名称和地址信息都相同的情况下,部门评分较高者排序到最靠前的位置。
如果部门评分都相同,即没有匹配到部门信息的情况下,则按照设定好的优先部门排序规则进行排序。例如如果设定部门优先排序规则为“办公室、财务科、人事科”,则会优先排序该单位中部门为“办公室”的数据,如果数据当中没有部门为“办公室”的,则优先排序部门为“财务科”的,以此类推。
语义相似度排序流程图如图3所示。
2.2 智能查号引擎的实现与性能分析
在查号引擎测试中,测试并分析了1 000条数据分别请求对话。查号引擎的响应时间分布图如图4所示,最快响应时间为1 ms,最慢响应时间为3 815 ms,平均响应时间为282.353 ms,这个平均响应时间完全可以满足用户的需求。
3 结 语
本文首先通过分词、简称替换和单位名称基础分词分析完成数据的预处理。构建了停用词表和同义词库,实现了对原始数据名称、地址语义和部门语义的抽取。通过最长公共子序列、最長公共子元素序列、短文本相似度计算等算法实现了单位信息的查询处理。利用文本相似度计算结合前期对数据的预处理,通过提供遵循REST规范的API接口来实现智能查号,最终完成了智能查号引擎的设计。最后,对查号引擎响应时间进行了测试,分析了其业务处理能力。结果表明,智能查号引擎能够满足用户的基本需求,
可以提供24 h不间断服务,相对于人工服务,具有更高的查号效率和更稳定的高质服务,可为智能电话客服的发展提供借鉴。尽管如此,本研究在文本预处理阶段需要做大量人工标注工作,今后的研究方向是进一步减少人工干预,实现数据处理的自动化。
参考文献/References:
[1] 马龙. 人机对话理解中联合学习技术的研究与应用[D].北京:北京邮电大学,2017.
MA Long. Research and Application on Joint Learning Technology in Spoken Language Understanding[D]. Beijing: Beijing University of Posts and Telecommunications,2017.
[2] 谷鑫.微信公众平台客服机器人设计与实现[J].信息技术,2017(5):166-169.
GU Xin. Design and implementation of customer service robot on WeChat public platform[J].Information Technology,2017(5):166-169.
[3] 王飞. 基于蚁群优化的模糊文本聚类算法研究[D].郑州:河南工业大学,2010.
WANG Fei. The Research on Fuzzy C-Means Documents Clustering Based on Ant Colony Optimization[D]. Zhengzhou: Henan University of Technology, 2010.
[4] 刘丽彬.语言学视角下中西新闻报道的文体特征差异[J].新闻知识,2013(5):28-29.
LIU Libin. Differences in stylistic features between chinese and western news reports from the perspective of linguistics[J]. News Research, 2013(5):28-29.
[5] 赵谦. 基于HowNet的短文本语义相似度计算方法研究[D].太原:太原理工大学,2017.
ZHAO Qian. Research on the Method of Semantic Similarity Calculation of Short Texts Based on HowNet[D]. Taiyuan: Taiyuan University of Technology, 2017.
[6] ZHU Ganggao, CARLOS A I. Exploiting semantic similarity for named entity disambiguation in knowledge graphs[J]. Expert Systems with Applications,2018,101: 8-24.
[7] 于海英. 程序代码相似度识别的研究[D].呼和浩特:内蒙古师范大学,2006.
YU Haiying. Research of Identifying Progam Code Similarity[D]. Hohhot: Inner Mongolia Normal University, 2006.
[8] 孙焘,朱晓明.基于格代数的最长公共子序列近似求解[J].计算机科学,2017,44(2):270-274.
SUN Tao, ZHU Xiaoming. Computing longest common subsequences approximately based on lattice[J]. Computer Science,2017,44(2):270-274.
[9] 林翠萍,吴扬扬.采用改进最长公共子序列的人名消歧[J].华侨大学学报(自然科学版),2016,37(2):201-206.
LIN Cuiping, WU Yangyang. Person name disambiguation based on revised longest common subsequence[J]. Journal of Huaqiao University(Natural Science),2016,37(2):201-206.
[10]李城,沙俊淞,武文.基于最长公共子序列的微博谣言溯源研究[J].计算机与现代化,2018(1):107-112.
LI Cheng, SHA Junsong, WU Wen. Research on origin of micro-blog rumors based on longest common subsequence[J]. Computer and Modernization, 2018(1):107-112.
[11]TSENG Kuotsung, CHAN Desheng, YANG Changbiau,et al. Efficient merged longest common subsequence algorithms for similar sequences[J]. Theoretical Computer Science,2018,708:75-90.
[12]劉鼎甲. 基于关系模型的语料库查询处理问题研究[D].秦皇岛:燕山大学,2015.
LIU Dingjia. Issues on the Query Processing of Corpora Based on Relational Model[D]. Qinhuangdao:Yanshan University, 2015.
[13]王鉴全. 基于概念图挖掘的中文文本倾向性研究[D].大连:大连理工大学,2012.
WANG Jianquan. Chinese Sentiment Analysis Based on Comception Map Mining[D]. Dalian: Dalian University of Technology, 2012.
[14]王先胜. XSemantic:基于语义扩展的XML关键字检索技术研究[D].上海:复旦大学,2010.
WANG Xiansheng. XSemantic: The Research of Keuword Search on XML Documents based on Keyword Expansion[D]. Shanghai: Fudan University, 2010.
[15]王鉴全, 季绍波. 基于关联规则的自动构词算法研究[J]. 计算机科学, 2014, 41(11):256-259.
WANG Jianquan, JI Shaobo. Research and application on auto-word buiding[J].Computer Science, 2014, 41(11):256-259.
[16]陈俊鹏. 词义消歧中若干关键技术研究[D].武汉:武汉大学,2012.
CHEN Junpeng. The Reaearch of Several Key Technologies of Word Semse Disambiquation[D]. Wuhan: Wuhan University, 2012.
[17]化柏林.知识抽取中的停用词处理技术[J].现代图书情报技术,2007(8):48-51.
HUA Bolin. Stop-word processing technique in knowledge extraction[J]. New Technology of Library and Information Service, 2007(8):48-51.
[18]马治涛. 文本分类停用词处理和特征选择技术研究[D].西安:西安电子科技大学,2014.
MA Zhitao. Research on Stop Words and Feature Selection for Text Classification[D].Xian: Xidian University,2014.
[19]熊文新,宋柔.信息检索用户查询语句的停用词过滤[J].计算机工程,2007,33(6):195 -197.
XIONG Wenxin, SONG Rou. Removal of stop word in users request for information retrieval[J]. Computer Engineering, 2007,33(6):195-197.
[20]靳锐,张宏莉,张玥,等.中文公众事件信息熵计算方法[J].软件学报,2016,27(11):2855-2869.
JIN Rui, ZHANG Hongli, ZHANG Yue,et al. Calculation method of chinese public event information entropy[J].Journal of Software,2016,27(11):2855-2869.
[21]胡毅君. 基于低失真替换的文本隐写算法研究[D].长沙:长沙理工大学,2015.
HU Yijun.Research on Text Steganography based on Low Distortion Substitution[D].Changsha: Changsha University of Science & Technology,2015.