一种基于NLP的传感器选型咨询系统设计开题报告

 2021-12-17 23:20:44

全文总字数:23782字

1. 研究目的与意义(文献综述)

  1. 目的及意义(含国内外的研究现状分析)

    1.1选题背景与意义

    近几年来,传感器在各领域的应用越发广泛。据统计,由于世界各国普遍重视和投入开发,传感器发展十分迅速。目前,从事研制生产单位已超过6500家。美国、欧洲俄罗斯各自从事传感器研究和生产厂家1000余家,日本有800余家。近年来,全球传感器市场一直保持快速增长,市场对传感器的需求将不断增多,到2017年全球传感器行业市场规模增长至1955亿美元。而随着需求和应用场景的增加,传感器的类型和功能日益丰富。具体来说,汽车传感器市场潜在规模达57亿只,是目前的14倍以上;物流传感器市场潜在规模达100多亿,是目前的十几倍;煤矿安检传感器市场潜在规模达数百亿元;安防传感器市场的规模增速将和安防行业的产值增速同步[1]

    面对如此庞大且日益剧增的传感器市场,从种类繁多的传感器中选择出一个最合适的传感器并不容易,若只通过传统搜索引擎搜索结果,得到的信息参差不齐,无法满足大部分用户的需求。针对这一问题,设立专用的传感器选型咨询系统将会是一个很好的解决办法。传感器选型咨询系统建立在智能问答系统的基础之上,智能问答系统综合了自然语言处理、知识管理分类等技术理解用户查询意图,将精确答案以自然语言形式返回用户[2]。而传感器选型咨询系统正是在此基础上,根据用户的各种需求——如应用场景、选择的量程以及灵敏度等指标,进而提供合适类型的传感器选型推荐。将此系统应用于日常工作人员选型的辅助工具,不断的完善其知识库,将会极大程度上提高工作效率。

    1.2问答系统的发展历史

    早在20世纪50年代,阿兰·图灵就提出了著名的图灵测试,该测试用于测试计算机是否具有“智能”。图灵测试是把计算机和人都藏在用户看不见的地方,用户提出一系列的询问,计算机或者人给出问题的解答,如果用户分不清是人在回答还是计算机在回答问题,那么该计算机就具有了智能[3]。这便是智能问答系统的前身,而随后的问答系统发展可以分为三个阶段。

    第一阶段始于上世纪60年代末,是一种基于符号规则的、始于上世纪60年代末使用模式匹配的专家库,该类问答系统使用数据库检索技术在二维的结构化数据表中进行检索,需要预先构建大规模领域词典以及检索规则,最具代表性的是1961年的BaseBall和1972年的LUNAR。这类系统可以通过自然语言完成问答,但其数据存储及查询受关系型数据库的限制,不适用于非结构或半结构化数据,对领域词典重度依赖,自动获取知识的能力存在瓶颈。

    从上世纪90年代起,以信息和信息检索技术为核心的问答系统逐渐取代了基于模式匹配的专家库。这便是基于数据统计的第二阶段,其建立特定的框架并组建知识库,其底层数据支撑是一些非结构化、半结构化或无结构的原始文档、网页等,检索时首先在大量的原始信息中检索与查询相关信息,之后进一步抽取精确的答案。这类问答系统的典型代表是基于Web的自动问答系统Start、基于FAQ(Frequently Asked Questions,常见问题解答)数据集的问答系统 Finder、基于搜索引擎的MULDER等。基于统计学的问答系统大放异彩, 问答系统已经开始出现浅层学习技术, 但是这种基于浅层学习的问答系统虽说有一定的学习能力, 但由于这种学习能力不强, 也不易于理解, 在很多方面难以给出解释, 这些因素限制了当时问答系统的进一步发展。

    随着大数据、深度学习、知识管理等技术的飞速发展与深度应用,便来到了基于深度学习的第三阶段。智能问答系统以知识和知识自动化为中心。国外许多专家学者在知识表示的不同层面进行研究,由此衍生出不同类别的问答系统。基于逻辑表示的问答系统将知识看作一组逻辑公式的集合,对知识的更新则转化为对逻辑公式的增加、删除或修改。基于框架表示的问答系统设计特定领域的框架表示存储特定对象的所有知识,使用框架语义分析生成答案。基于语义Web的问答系统将语义Web的本体、数据推理等技术应用于智能问答系统,使用以语义网络构建的知识库进行知识表示,知识查询综合运用模式匹配、语义解析、SPARQL(SPARQL Protocol and RDF Query Language,SPARQL协议和RDF查询语言)等技术。基于语义 Web 的智能问答系统能够以形式化的方式表示语义,提高了异构系统之间的互操作性,进一步提高了问答系统的智能性和精确性。使用语义知识库替代传统基于关键词文本的知识表达,实现智能问答,利用知识库自动生成用户答案,提升问答系统处理复杂问题的能力,已经成为问答系统未来的发展趋势[2]

    1.3国内外研究现状

    (1)国外研究现状

    国外智能问答系统的研究起步很早,而且在工业界和学术界已经处于遥遥领先的位置,并且开发了比较成熟的智能问答系统。比如,麻省理工大学的START系统、苹果公司的Siri、Google的Google Now以及AskJeeves、MULDER等等。

    美国麻省理工大学(MIT)人工智能实验室于1993年开发出的START是全世界第一个基于Internet的问答系统,意指为用户提供准确的信息及答案。经过多年的积累学习,如今它能够回答大量英语问题,包括但不限于常见的地点相关问题(城市、国家、天气、地图、人口、政治、经济等),电影相关问题(片名、演员、导演等),人物相关问题(姓名、出生日期、介绍等)以及词典定义相关问题。该系统采用基于知识库和基于信息检索的混杂问答模式,用户提出问题若属于知识库范畴,则直接利用知识回答问题更为精准;当理解问题不属于知识库范畴,则通过关键词检索答案后处理成准确而简洁的语言返回给用户。

    Siri的研究始于2007年,2010年被苹果公司以两亿美金收购。Siri利用了自然语言处理技术,起先只能以文字聊天服务为主。后来通过与全球最大的语音识别厂商Nauance合作,使得Siri具备了语音识别功能。现在Siri是一个语音助手,被苹果公司附着在产品iPhone4S、iPad3 及以上版本手机和Mac上。Siri使得苹果产品变身成为智能问答系统,可以辅助用户进行短信读取、餐厅介绍、天气询问、语音设置闹钟等服务。

    Google Now(Google即时)是一套由Google公司开发的智能语音助手,拓展了Google搜索在手机应用程序的功能,可以附着在Android和IOS上。Google Now应用自然语言用户界面,通过一系列的Web服务进行问题回答、建议提供以及其他动作等等。在响应用户提问时,Google Now会基于用户以往的搜索习惯来实时预测用户可能需要的各种信息。

    AskJeeves是美国一家著名的商用问答系统,它对于人类自然语言提出的问题进行多种方式的回答,包括一段文本内容、一系列相关文档链接及其内容摘要,同时在有相关多媒体内容的情况下,展示给用户更丰富的检索信息。作为一家商用的问答系统,AskJeeves不仅提供Web网页的内容检索,也可以采用图片、新闻、产品文档作为数据源,从中检索用户意图的有效信息。AskJeeves为了准确理解用户提问意图,雇佣了数百名专职人员构造问题模板,大部分的问题结构分析都是依赖手工模板完成的。系统中的问题模板虽然能够细化明确用户意图,但由于人工产生的维护更新,导致系统构建工作量非常大。

    新加坡国立大学开发的LAMP问答系统为了更加准确的理解用户提问意图,列出了person、organization、location、date、time、money、percent共7种查询类别让用户进行选择,对检索信息分析提取答案后,直接以文本形式返回结果,而检索出的非网页页面形式。MULDER的工作形式与其类似,它将网页相关数据保存至本地,再进行答案的分析提取[3]

    (2)国内研究现状

    与国外研究相比,国内的智能问答系统的研究无论在规模还是研究水平上都还有很大的差距。原因有二: 一是国外一些相对成熟的技术和研究成果只是针对于英文的,一旦换成了中文,那么技术或者成果表现不是很好;二是自然语言处理的基础资源建设,比如语料库的建设,知识库的开发以及相应的评价机制都没有建立起来。国内在这方面的人力物力的投入还是不够的。

    国内在智能问答系统领域研究得比较好的研究机构和公司主要有清华大学、北京大学、中科院计算所、哈尔滨工业大学、北京语言大学、香港大学、香港中文大学以及百度科技有限公司等等。

    哈尔滨工业大学开发的HIT自然语言处理工具,为中文的智能问答系统研究奠定了坚实的基础。这套工具可以对句子进行句法分析、语法分析和中文分词等操作。

    “度秘”是百度公司推出的一款对话式人工智能系统,在2015年9月份,由李彦宏在百度世界大会上推出。基于DuerOS对话式智能问答系统,经过语音、文字处理,涉及自然语言处理技术,使得用户轻松无障碍地与“度秘”进行“交谈”[4]

    1.4国内外具体实现方案和技术路线

    由于人们观察问答系统的角度各不相同,因此问答系统有多种分类方法。如果根据问答系统的知识来源不同,可将其分为了三类:

    ①基于Web文档的问答系统(Web-based Question Answering,WQA):以互联网中的Web文档作为问答系统数据的主要来源,通过查询控制搜索引擎搜索相关的文档和段落来获取用户所提问题的答案。

    ②基于社区QA对的问答系统 (Community-based Question Answering,CQA):主要以互联网社区(如知乎、百度知道 、雅虎知道 、搜搜问问等 )中的各类优质QA对作为问答系统数据的主要来源。

    ③基于结构化数据的问答系统 (Question Answering over Knowledge Bases,KBQA):主要以各类的关系型数据库或非关系型数据库中存储的数据作为问答系统数据的主要来源[5]

    而对于这三种类型的问答系统,均包含三个基本过程——问题分析、信息检索以及答案抽取。

    其中问题分析即如何去分析问题;信息检索即如何根据问题的分析结果去搜索答案可能存在的范围;答案抽取即如何从搜索到的答案之中找到最佳答案。

    (1)基于Web文档的问答系统相关技术

    系统的总体框图如图1.1所示。问题分析模块需要完成问题分类、主题提取以及关键词提取的工作,并生成并向文档库发送查询串。信息搜查则是根据查询串进行文档检索和段落检索,并将潜在答案段落返回到答案抽取模块,生成候选答案,最后对候选答案进行排序挑选出最佳答案。

    a)问题分析模块

    首先,问题分析模块对用户所提问题进行中文分词,去停用词等操作。关于中文分词的相关模型和方法在后文会详细提及。随后,通常需要对问题的类别进行分析,问题的类别是反映用户提问意图的重要信息。问题的关键词、同义词、相似问题之类的信息也常常被问题分析模块用于理解用户的查询意图。

    图1.1基于Web文档的问答系统总体框图

    针对中文问题的特色,哈尔滨工业大学信息检索研究室提出了中文问题的分类体系,如表1所示。

    表1 中文问题的分类体系

大类(Coase)

小类(Fine)

人物(HUM)

特定人物,团体机构,人物描述,人物列举,人物其他

地点(LOC)

星球,城市,大陆,国家,省,河流,湖泊,山脉,大洋,岛屿,地点列举,地址,地点其他

数字(NUM)

号码,数量,价格,百分比,距离,重量,温度,年龄,面积,频率,速度,范围,顺序,数字列举,数字其他

时间(TIME)

年,月,日,时间,时间范围,时间列举,时间其他

实体(OBJ)

动物,植物,食物,颜色,货币,语言文字,物质,机械,交通工具,宗教,娱乐,实体列举,实体其它

描述(DES)

简写,意义,方法,原因,定义,描述其它

未知(Unknown)

未知

可见,由于每一类问题都有一些非常明显的特征。针对这一特点,问句分类的主要方法包括模式匹配法和机器学习法两类。

所谓模式匹配法,最简单的规则就是根据非常有特点的关键词来判断问题的类型,如包含“谁”的问题属于人物类问题,包含“什么时候”的问题属于时间类问题,包含“什么地方”的问题属于地点类问题。

此外,存在一些比较复杂的规则,例如Li[6]等人提出的基于语义模式的问题分类方法,其语义模式是一种特殊的规则。对于问题“What book did Rachel Carson write in 1962?”,便可以将其转化为相应的语义模式“[Physical_Object\Product] did [Physical_Object\Human][Event\Action]?”进行匹配。除了问题的类型,这种方法还可以得到问题的目标、问题的约束等多种信息。

不过,当没有一条规则能够匹配问题,模式匹配法就会失效。此时,统计机器学习的方法是一个很好的出路。支持向量机作为一种成熟的分类算法,被广泛用于问答系统中的问题分类。也有人使用SNoW分类器、语言模型或者循环神经网络对问题进行分类,都取得了不错的效果。

另外,对于主题和关键词的提取,LIU[7]等人通过对问题语法结构的分析,进行了主语和宾语的提取并将其作为关键词,能在一定程度上确定问题的主题。

b)信息搜索模块

信息检索模块的主要功能根据问题分析的结果返回的查询获取相关文档及片段,通常的手法有调用相关网站提供的API接口,但此方法大多数会有次数限制。另一个方法就是使用爬虫技术,但某些网站上存在着反爬警告和限制,会对爬虫造成一定的影响。

信息检索一般分为两个步骤:

①文档检索,即根据问题搜索相关的Web文档。

②段落检索,即从已经搜索到的文档之中再进一步的搜索,抽取出与问题相关度较高的段落。

文档检索是由问题分析生成的查询, 通过某个检索模型去得到相关的文档。因而便两个问题需要处理:一、是检索模型的选取;二、是查询的生成。常见的搜索模型有一共有三种——矢量空间模型、概率模型以及倒排模型[8]

矢量空间模型是将文档描述成由一系列关键词组成的矢量。在英文中通常将一个单词作为一个关键词,而在中文中关键词的确定往往是根据分词结果确定的,根据分词方法的不同,可能将单个的汉字或者词语作为关键词。矢量空间模型的优点在于便于理解,计算简便。但矢量的每个维度缺乏连续性。该模型其实从本质上说仍然是基于关键字匹配的,没有任何深层次的语义分析能力。

概率模型与矢量空间模型的区别在于概率模型不再需要计算每个单词的权重,直接计算文档和查询的关联概率,将文档根据概率排序。概率模型有很多,对于概率计算的算法也非常复杂,不同的研究者通过不同的参数控制概率生成的过程,使之更好的满足用户的需求。但是概率模型的基本原理是不变的

这一模型最早由Maron和Kuhn在1960年提出。在给定查询Q的情况下,用 P(D|R)表示文档与查询相关的概率,而用P(D|R)表示文档与查询不相关的概率。

倒排模型拥有非常快的搜索速度,适宜于关键词的查询,它可以被看成一个连标书组,每个链表的表头包含关键字,后续单元则是拥有这个关键字的文档标号。其模型示例如图所示图1.2所示。

倒排模型从本质上来说是一种对数据结构的优化,其查询速度大大优于其他的数据结构,因为普通的文档存储是采用简单无串行表进行存储的,所以当系统需要比较文档的时候往往就需要遍历所有的文档。而倒排技术将文档通过关键词组织起来,这就大大加快了查询的速度。

图1.2倒排模型示例

而对于段落检索,王睿[9]等人提出了一种基于隐性语义的搜查方式。它是利用了数学上的奇异值分解,将文件向量维度减小,从而可以去除一些因为字汇有限而产生的词语之间的相关性。通过这种方法能够得到较好的段落检索结果。

c)答案抽取模块

答案抽取模块主要的工作便是根据搜索到的段落,进行候选答案的生成以及最佳答案的抽取。

从网页片段中抽取生成候选答案的方法有很多,主要包括如下几种典型的方法。

第一种是手工编辑或自动生成名词词典,将词典中的所有名词都作为候选答案。但是这种做法非常不利于最佳答案的选取。著名的问答系统沃森[10]就将抽取维基百科的词条作为候选答案,但维基百科的词条非常的繁多,没有进行任何的筛选,导致返回的候选答案种类繁多,效果并不理想。

第二种是利用命名实体识别工具,从找到的相关段落中抽取出命名实体作为候选答案。万里[11]等人提出了一种基于字词联合训练的双向长短时记忆网络(Bi-LSTM)命名实体识别新算法。该方法是根据中文语言特性,在传统词向量中融入字向量的语义信息并将其作为神经网络的输入。虽然他的研究并不是直接的从Web文档中提取出命名实体,但其对于中文实体的识别思路非常有借鉴意义。

对于候选答案排序及最佳答案选择的方法,主要包括如下几种典型的方法。

采用向量空问模型(VSM)计算候选答案与问题的相似度,并以此进行排序。余正涛[12]等人基于VSM方法,利用潜在语义分析实现了汉语问答系统的答案提取。这一方法与上文提及的王睿等人的方法作用原理相似。但是用处并不相同。

另外,马永杰等人[13]提出的遗传算法,可以根据词汇特征、相似度特征、统计特征等多种特征进行综合排序。运用其擅长解决全局最优化问题的特点,将其用于问答系统之中,从而实现了对候选答案的多特征综合排序。

(2)基于社区QA对的问答系统相关技术

社区问答系统的知识数据来源是从各种社交社区中提取的优质QA对,QA对是社区问答系统的基础,是否有优质的QA对是判断一个社区问答系统好坏程度的重要标准。其总体框图如图1.3所示。其问题分析模块包括问题分类、关键词提取以及关键词扩展等功能,同样,将输出查询串进入QA对知识库中进行查询,而信息搜集模块则是搜索社区网络的问题与答案,形成QA对,写入QA对知识库中。答案抽取模块则是需要查询相关问题的候选问题,并将其问题的各个候选答案进行排序,从中选出一个最好的答案。

图1.3基于社区QA对的问答系统总体框图

a)问题分析模块

和基于自由文本的问答系统的问题分析部分基本一样,但值得注意的是,基于结构化数据的问答系统和基于Web文档的问答系统一般都只能处理客观、事实类型的问题。然而在基于社区QA对的问答系统中有大量的主观类型的问题, 而对于主观类型的问题和客观类型的问题有不同的处理方式, 例如主观问题没有标准答案, 而且答案可以多个, 然而客观问题却只能有一个标准答案[14]

根据问题的主客观性,可将基于社区QA对的问答系统中的问题分为事实类、观点类或两者综合这3类。针对这一问题,Li[15]等人便是将主客观性判断描述为分类任务,并对每个问题及其相应的答案提取了TF特征、n元语法特征和POS特征等文本特征。利用了未标注样本中所包含的信息,采用半监督学习算法Co-training进行主观性判断。在进行大小类分类之前,先进行一次对三种类型问题的分类判断。

b)信息检索模块

在信息检索模块中,主要的任务是根据问题分析的结果去查找相似的问题,返回答案或者是问题的列表。因此,研究适合QA对的检索模型和问题相似度判断是本模块中最重要的两个问题。

在经过问题分析之后, 需要通过信息检索模块将找到相似的问题, 这是找到合适答案的基础。关于适合QA对的检索模型,有如下几个方法。

陈永平[16]等人提出了一种基于用户问题的主题和焦点的问题理解的方法。他们做出了以下的实验内容,对于焦点,如果疑问词后紧跟着名词,则焦点是由疑问词和名词组成,否则焦点就是疑问词。如果疑问词位于句子的末尾,则主题是句子的主语,否则主题是句子的宾语。并通过这个逻辑进行训练,得到了较好的结果。

李春泳[17]采用语言模型困惑度、序列模型、词的搭配当作为质量特征,并且通过最大熵模型把它们有机结合起来,最后得到一个量化的质量数值。 其试验结果表明引入文档质量到检索模型中比传统的检索模型能取得更好的试验结果。

钱如栏[18]等人找到了一种更有效的检索方法——基于SLM的语言模型的信息检索技术(SLM-IR)。这是一种基于概率的模型,其基本原理是对每个文档均建立一个模型,并计算每个模型产生主题或查询的概率,之后在对这些概率值进行排序,返回排序的结果即搜索的结果。此外,他还研究了N-gram模型的参数N选取及其几种主要的数据平滑技术,如加1平滑、Good-Turing估计、贝叶斯平滑等等,对其在不同场景的优劣进行了对比说明,最终给出了在不同情况下的最优选择方案。

而如果从问题相似度的角度出发。则首先把与给定问题相似的问题找到, 然后再在相似的问题中寻找最好的答案,相应的方法有以下几种。

万庆生[19]提出了一种基于形式概念分析(FCA)的问句相似度计算方法,该方法在计算问句相似度过程中考虑了问句的语义与语法结构,首先,需要建立一个领域概念集,再通过问句分析与领域概念集之间的匹配关系计算相似度;这种基于FCA的问句相似度计算方法能够把问句相似度计算转换成概念向量的相似度计算,进而从概念层次对问句进行分析和相似度计算,使问句的相似度计算更为准确与稳定。

而宁建飞[20]等人采用通过深度学习构建词向量的方法,使用倒排模型,根据关键词索引表找到相关的问句,进而组成相关问句的问题集,若问题中关键词词向量出现的越多,证明它越符合我们的需要,进而生成得分。设置合适的阈值,若高于设定阈值,则是我们可能需要的候选答案,反之则否。这一方法的本质也是实体命名识别,有着较好的实验效果。

而刘拼拼[21]针对基于词向量的问句相似度计算方法进行改进。改进包括两点内容,一是词向量优化,二是相似度计算方案的改进。其中词向量优化主要优化两个部分,一是近反义词问题的处理,二是未登录词问题的处理。相似度方案改进主要是基于WMD算法基础上,加入词和字的共现信息,从而提高计算的正确率。其次,提出基于深度学习的问句相似度计算。将深度学习应用到问句相似度计算中,主要利用深度学习分类模型选择候选问句集,然后在通过基于词向量的问句相似度方法进行精确匹配。

c)答案抽取模块

由于问题答案对已经有了答案, 答案抽取最重要的工作就是判断答案的质量.研究怎么从问题的众多答案中选择一个最好的答案。以下是有代表性的几种方法。

刘高军[22]等人以百度知道作为研究对象,其目的是为了建立一个质量检测的分类器。他根据QA对常有的四大特征——文本特征、统计信息特征、提问者和回答者之间的关系特征以及问题和答案的关联度特征,来对QA对的质量进行检测,实验结果表明,该方法获得了较高的准确率和召回率。

李晨[23]等人制作了一个基于特征集的问答质量分类器。他根据从社区中得到的大量QA对,对提问者和回答者的互动关系与特点进行了统计和分析。然后对QA对质量判定进行了人工标注,提取的到了文本和非文本的两类特征集,进而制作了问答质量分类器。

(3)基于结构化数据的问答系统相关技术

基于结构化数据的问答系统的主要思想是通过分析问题,找到问题中的命名实体,通过问题模板训练,选用合适的分类器将问题进行分类,再根据分类标签把问题转化为一个查询, 然后在结构化数据中进行查询, 而这个返回的查询结果便是我们需要的答案。对于限制专业领域,此方法将会是最准确且最高效的方法,因而也将是本次毕业设计的首选方案。其总体框图如图1.4所示。

图1.4基于结构化数据的问答系统总体框图

其基本过程是根据问题特点来分析问题, 根据问题的分类产生一个结构数据的查询语言格式的查询。将产生的查询提交给管理结构数据的系统(如数据库等),系统根据查询的限制条件筛选数据,把匹配的数据作为答案返回给用。而根据使用的管理系统不同,基于结构化数据的问答系统又有几个分支。本节以不同的数据管理系统为线索,来分别讲述。

a)基于关系数据库的问答系统

这类问答系统采用关系型数据库作为其知识源[24]。七十年代,随着自然语言处理领域中相关处理技术的进步,出现了不少基于数据库的问答系统。其中最著名的一个系统是LUNAR[25]。LUNAR 基于语法分析,可以支持英语查询月球岩石标本信息。LUNAR是第一个可以真实应用的基于数据库的自动问答系统。然而,这些早期面向特定的数据库的自动问答系统的可移植性很差,也被称为专家系统。

七十年代末期的 LADDER[26]系统,扩大了这类自动问答系统的应用范围。它使用一种名为语义语法的技术,能够较方便地将新的语义知识添加到系统中,使得 LADDER 能用于不同的数据库管理系统中,具有了较强的通用性,在当时很有代表性。但这种方法仍然缺乏可移植性,在切换领域的时候需要人工定制不同的语义语法知识,十分耗费人力资源。到了八十年代,研究人员为了解决早前系统的可移植性差问题,出现了许多通用系统方面的研究工作,如 CHAT-80[27]。它使用了Prolog作为数据库查询语言。CHAT-80通过分析问句,并结合规则,将用户输入的英文问句翻译为Prolog查询答案。

八十年代中期,出现了大量的相关系统,这一时期的代表系统是TEAM[28]。它将领域知识管理部分划分为单独模块,交由数据库管理人员统一管理,一定程度上优化了系统通用性和可移植性。

但在这之后,基于关系数据库的问答系统进入缓慢发展时期。目前的主流思想是经过问题分析模块,对用户输入的问句进行分词、语义解析之后,在信息检索模块,进一步进行语义消歧,之后基于消岐结果构造SQL查询。国内对基于数据库的问答系统研究一直发展较为缓慢,始于二十世纪七十年代末期,主要是以词汇驱动、句法语义处理为特征的思路。其中,BAQS[29]是一个较为有代表性的成果。该系统基于结构化问句实例分析问句的方法,并设计了应用该方法时的各种语义知识及其表示。上述系统研究使用的技术包括但不限于关键词匹配、句法模式匹配、模板提取构造、语义语法理论、依存分析理论等。总的来看,中文领域的基于关系数据库的自动问答系统大多是探索工作,原型系统目前还难以应用到实际生活中。

b)基于本体的问答系统

通过构建本体,我们能更方便的进行知识共享和重用。近些年,随着 web2.0的快速发展,语义网相关本体知识库也得到发展,所以基于本体的自动问答系统的相关研究也越来越多。在基于本体的问答系统中,有两大关键问题需要被解决。一是命名实体识别,二是实体链接。以分析“红楼梦的作者是谁?”这一问题为例,从分析问题,识别实体,到根据实体链接来进行属性映射,其过程如图1.5[30]所示。

对于这个问题 Q(红楼梦作者是谁?),系统首先通过命名实体识别技术可以检测出问题中的实体词“红楼梦”,然后以“红楼梦”作为关键词在知识库中查找,可以得到“红楼梦”对应的实体(红楼梦、红楼梦等)。通过实体链接找到确定问题 Q 中实体词“红楼梦”表示的实体是“红楼梦”。确定问题 Q 中“红楼梦”对应的实体之后,利用知识库查找出实体相关的信息(如图中作者、主要任务、别名)生成候选答案。最后通过计算问题 Q 与候选答案的语义相似性来对答案排序,选择相似度最高的答案作为问题 Q 的最终答案。

图1.5基于本体的问答系统分析总体框图

毛麾[30]利用字特征和词特征来改进BiLSTM-CRF模型,模型输入的是拼接后的词向量和字向量,通过双向LSTM处理过后输入到CRF层,CRF层计算最后的标注序列。而对于实体链接这个问题,他使用了Entity Embedding算法来解决。Entity Embedding算法最大的作用就是将知识库中的一个实体表示为一个向量,为计算相似度和其他后续处理带来了巨大的便利。

而周博通、孙承杰[31]等人使用基于别名词典的排序方法进行命名实体识别,使用结合注意力机制的双向LSTM进行实体链接,最后综合前2步的结果从知识库中选择答案,也有非常好的效果。

1.5小结

相对于基于Web文档的问答系统和基于社区QA对的问答系统。基于结构化数据的问答系统具有易用性高、可信度更高等特点。又由于本次设计为传感器选型咨询系统,其专业程度较高,容错率较低,对数据的准确性要求更高。而Web文档和社区问答对都有一个共同的特点——数据过于冗杂,层次不齐。即使有相应的质量评价机制,也无法完全的避免“误答”的发生。而基于结构化数据的问答系统虽然需要多好费数据整理录入的时间,但却能极大程度上确保对待每个问题“对症下药”。因此,综合考虑,本次毕业设计将使用基于结构化数据的问答系统作为方案进行。

2. 研究的基本内容与方案

2.研究(设计)的基本内容、目标、拟采用的技术方案及措施

2.1需求说明和基本内容

设计一套基于NLP技术,通过专用界面实现人机交互的智能传感器选型咨询系统,用以根据用户的各种需求提供合适类型的传感器选择。需要完成如下功能:

①拥有能够和用户交互的图形界面。

②搭建一个合乎系统需求的传感器领域实体知识库。

③采取基于数据化结构的智能问答系统模式,通过NLP技术与深度学习方法对用户输入语句进行分词、命名实体识别、实体链接等操作最后生成查询语句在实体知识库中搜索出合适的传感器类型。

④若系统对问题理解不够确切,可提供一些备选查询理解供用户选择。

⑤至少支持两类(如测压、测长等)传感器的咨询问答。

⑥可根据用户选择的量程、分辨率等详细信息进行传感器的选型推荐。

2.2研究目的

(1)掌握NLP的使用方法,如进行中文分词、语义解析、命名实体识别等。

(2)掌握neo4j数据库的使用,搭建传感器领域的知识图谱。

(3)掌握图形界面的设计和编写。

(4)掌握python和neo4j数据库之间的链接与调用。

(5)对较为常见的传感器信息进行收集整理,了解工程中常用的传感器类型以及各项参数。

2.3技术方案

(1)总体方案概述

本方案采用基于知识图谱的问答系统,整个方案分为4大模块——数据采集模块、数据存储模块、前端交互模块以及问题分析模块,方案总体框图如图2.1所示。

图2.1设计方案总体框图

数据采集模块负责收集网络上各类传感器的详细数据,为了保证传感器数据的准确性,本方案筛选了两家数据齐全且可靠性较高的传感器生产厂商。

数据存储模块采取mssql数据库和neo4j数据库并用的双存储模式,mssql数据库作为初始数据导入存储的地方,而neo4j则用来制作知识图谱。两者之间可以进行数据的转换,较为方便。

前端交互模块为图形界面,在这方面要求不是特别的高,因而不需要使用专门的页面开发软件,初步决定使用python中的第三方库wxPython进行设计编写。

问题分析模块内容较多,因而再细分以下几步:实体识别与消歧,句子向量化,问题理解与构建查询。

在实体识别与消歧中,方法多种多样,综合考虑各个方法的优缺点后,本方案决定采用Bi-LSTM CRF的模式进行实体识别,采用实体链接的方式进行实体消歧。

在句子向量化中,本方案采用技术较为成熟的word2vec工具包,它能将已经分好词的句子向量化,方便计算机理解并计算自然语言,是方案后续操作的前提条件。

在问题理解中,我们需要使用朴素贝叶斯分类器来进行问题的分类,这一过程分为三个阶段——准备阶段、训练阶段以及应用阶段。准备阶段的主要任务是制作问题模板,将可能被问到的问题转化成更易读的问题模板,为后续的训练做准备。训练阶段是将准备阶段制作的问题模板数据集导入训练,让朴素贝叶斯分类器按照我们预期的方向进行问题分类,为不同的问题类型打不同的标签。而应用阶段则是使用已经完成的朴素贝叶斯分类器进行问题分类,并通过标签对问题进行还原。

在构建查询中,本方案根据问题分类的标签制作查询模板,为了确保能够更大范围内的搜索答案,需要使用模糊查询和正则匹配。另外,对于理解不够充分或者没有找到答案的问题,应返回提示列表。

(2)数据采集模块

本文所使用的数据主要来自上海振丹传感器仪表厂(https://www.shzhendan.com/)以及蚌埠大洋传感系统工程有限公司(http://www.dysensor.com/)。这两家厂商生产的传感器种类齐全,且在官网上的数据记录都比较完备。所需要采集的数据如图2.2所示。

为了保证数据的规范性和准确性,且样本量并不是特别大,本方案采取人工录入数据的方式采集数据。此外,由于网站上的数据大多是以图片的形式存在,可借用图片文字识别工具作为辅助。

图2.2需要获取的数据

(3)数据存储模块

neo4j图形数据库在构建知识图谱上有着巨大的天然优势,在反映整个实体结构和相连接的属性关系上更加的直观,因而使用neo4j制作知识图谱,作为我们需要的专业知识库。但neo4j的一大弊病便是数据录入并不方便,如果之间录入neo4j,步骤会较为繁琐。因而选用mssql数据库作为辅助录入数据,且mssql数据库可以与neo4j数据库互通,可以将mssql数据库中数据进行预处理后直接导入neo4j数据库,非常方便快捷。所以,本方案并用mssql数据库和neo4j数据库作为数据存储模块[32]

a)mssql数据库设计

表2.1mssql数据表结构

字段名

数据类型(长度)

存储信息

Cgq_name

Varchar(100)

传感器名称

Cgq_type

Varchar(100)

传感器类型

Range

Varchar(100)

规格

Accuracy

Float(2)

综合精度

Input_R

Int(10)

输入电阻

Output_R

Int(10)

输出电阻

Input_error

Float(2)

输入电阻误差

Output_error

Float(2)

输出电阻误差

Nonlinear

Float(2)

非线性

Voltage

Varchar(100)

激励电压

Voltage_max

Int(10)

最大激励电压

Lagging

Float(2)

滞后

Tem_zero

Float(2)

温度对零点的影响

Repeatability

Float(2)

重复性

Tem_output

Float(2)

温度对输出的影响

Overload_capacity

Int(10)

过载能力

Wireway

Varchar(100)

导线

Working_tem

Varchar(100)

工作环境温度

Insulation_R

Int(10)

绝缘电阻

Connection_mode

Varchar(100)

接线方式

Size

Varchar(100)

外形尺寸

Thread

Varchar(100)

接口螺纹

如表2.1所示,初步设计的表包括22个字段,需要从相关网站上抽取传感器名称、类型、规格、综合精度、输入输出电阻、输入输出电阻误差、非线性度、激励电压及其最大值、滞后、温度对零点和输出的影响、重复性、过载能力、导线情况、工作环境温度、绝缘电阻、接线方式、外形尺寸、接口螺纹尺寸等数据。将这些初始数据全部存入mssql数据库中。

b)neo4j数据库设计

在知识图谱中,数据以三元组的方式呈现。本文根据实际情况每部电影的信息以实体-属性-属性值(数据映射为一对一)和实体-关系-实体(数据映射为一对多)的方式将数据存储在图数据库中。其中每个属性只有一个对应值,而每个关系可以连接多条实体。以LTR-1M型拉压力传感器为例,‘LTR-1M型拉压力传感器-激励电压-10~12V’等传感器的唯一属性可以构成实体-属性-属性值形式的三元组信息,而‘LTR-1M型拉压力传感器-子类->拉压力传感器’等一对多的数据则可以构成实体-关系-实体的三元组信息。

如表2.2所示,依然以LTR-1M型拉压力传感器为例,需要将mssql数据库中的22个字段分别转换成22个属性,并填入相应的属性值,便可形成。

表2.2属性一对一映射表

实体

属性

属性值

LTR-1M型拉压力传感器

传感器名称(Cgq_name)

LTR-1M型拉压力传感器

LTR-1M型拉压力传感器

传感器类型(Cgq_type)

拉压力传感器

LTR-1M型拉压力传感器

规格(Range)

['20KN','50KN','100KN','200KN','300KN']

LTR-1M型拉压力传感器

综合精度(Accuracy)

0.5

LTR-1M型拉压力传感器

输出电阻(Output_R)

700Ω

LTR-1M型拉压力传感器

输入电阻(Input_R)

700Ω

LTR-1M型拉压力传感器

输出电阻误差(Output_error)

0

LTR-1M型拉压力传感器

输入电阻误差(Input_error)

0

而对于实体-关系-实体三元组,我们可以建立的关系有子类,同类,应用场景三种关系。而对应的实体共有传感器实体、种类实体、应用场景实体三类,如表2.3所示。

表2.3实体关系一对多映射表

实体

关系

实体

拉压力传感器

子类

LTR-1M型拉压力传感器

拉压力传感器

子类

LTR-1(BLR-1)型拉压力传感器

拉压力传感器

子类

LTR-1F型拉压式负荷传感器

LTR-1M型拉压力传感器

同类

LTR-1(BLR-1)型拉压力传感器

LTR-1M型拉压力传感器

同类

LTR-1F型拉压式负荷传感器

LTR-1M型拉压力传感器

应用场景

测量拉力

LTR-1M型拉压力传感器

应用场景

测量压力

LTR-1(BLR-1)型拉压力传感器

应用场景

测量拉力

LTR-1(BLR-1)型拉压力传感器

应用场景

测量压力

(4)前端交互模块

前段交互模块使用进行GUI编程,Python有着许许多多GUI编程方面的第三方库,如Tkinter、PyQt、wxPython等等。

其中Tkinter模块是Python的标准Tk GUI工具包的接口。Tk和Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。其历史最为悠久,网上资料丰富,容易上手,功能也较为齐全。但是Tkinter没有提供一个图形界面设计器,以至于只能通过自己手敲代码来实现页面编程。

pyqt5作为Python的一个模块,它有620多个类和6000个函数和方法。QT可能是最强大的,但也许它也是最复杂的。学习难度较高,而且有着非常复杂的协议标准,导致操作难度也急剧上升。

wxPython 是一款开源软件,是 Python 语言的一套优秀的GUI图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。而它可以说是上面两者之间的一个很好的妥协,它是免费的,源代码是开放的,没有复杂的协议限制,同时,它也提供类似QT Designer的设计器wxFormbuilder。可以说他就是个压缩版的QT,但是该有的功能却完全不缺失。因而综合考虑,初步决定使用wxPython进行GUI编程。最终的前端布局参考图2.3[33]

图2.3交互前端页面布局参考图

(5)问题分析模块

问题分析模块是整个系统最重要的模块,包含了大量的工作——中文分词、命名实体识别、实体消歧、问题理解到最后构建查询。可以再将其细分,具体步骤如图2.4所示。

图2.4问题分析模块流程图

a)实体识别与消歧

理解问题的第一步便是获取问题中的命名实体,它指的是可以指代现实世界中某个或某类实体的单词或短语,如“传感器”,“电阻”等等。而为了获得与问句Q相关的实体集,首先需要准确定位问句中包含的命名实体,又由于命名实体识别的前提是中文分词,因而将两者统称为实体识别。

当前流行的命名实体识别方法主要可以分为两类[34],即基于规则与词典的方法和基于统计学习的方法。其中,基于规则与词典的方法是最传统的一类方法,这类方法非常依赖于专业的语言学家预先设计的规则模式,通过字符串搜索和匹配的手段实现实体识别。这类方法极易受到人工编制的规则的限制,且需要庞大的知识库支持,可移植性较差,对未登录知识库的新词汇识别能力不强。而基于统计学习的方法近年来随着机器学习的快速发展开始被大量使用,这类方法具有可移植性高,对歧义词区分效果好等优点,已经成为实体命名识别领域的主流方案,代表性的方法包括基于神经网络的方法,基于长短期记忆网络的方法,基于词向量聚类的方法,基于隐马尔可夫模型 的方法和基于最大熵马尔可夫模型的方法,基于条件随机场的方法等。

①条件随机场(CRF)

命名实体识别可以看作为序列标注问题[35](即对每个字进行词性标注),序列标注是指输入一个句子,输出一个序列标记,每个字对应一个标记。在命名实体识别中常用BMEO来进行序列标记,如果对应的字不是实体的一部分,则标注为O;如果是实体第一个字,则标注为B;如果是实体最后一个字,则标注为E;如果是实体中间的字,则标注为M;标注时可以加上实体的类型。标注示例如图2.5所示。

图2.5序列标注示例

上图中,输入的序列为X={传,感,器,可,以,检,测,压,力},对应输出的标注序列就是Y={B-Ggq,M-Cgq,E-Cgq,O,O,O,O,B-Ll,E-Ll}。

对于根据上下文信息预测当前字的标记有两种思路,一是按顺序根据上一个字的标记和当前字的特征,选择概率最大的标记作为当前标记,常用模型有最大熵模型和隐马尔科夫模型;二是基于整个句子作为特征建模而不仅仅只根据前一个字的标记进行预测,常用模型有条件随机场模型(CRF)[36]。CRF模型由于充分考虑了上下文全局特征,输出全局最优概率,因此实际效果远远好于其他两种算法。

②Bi-LSTM

由于序列标注是时序性任务,因此递归神经网络(RNN)及其变种LSTM常用语序列标注中。RNN在传统神经网络结构的基础上,将隐含层的每一个神经元和其前一个神经元相连接,从而隐含层的每个神经元不仅可以存储当前时间段的特征,还可以存储该神经元之前的历史特征。但是当序列很长时,历史特征过多,RNN无法全部表述,会遗忘重要特征。因此LSTM[37]在RNN的基础上,在每个隐层神经元中増加了三个门来对上一个神经元传递过来的特征进行取舍,从而实现存储长距离重要特征的作用。由于在序列标注问题中,当前字的上下文对该字的标注均有影响。因此在构建序列标注模型中,为了充分学习特定时间段的前向特征和后向特征,往往将一层LSTM扩展为两层双向LSTM(Bi-LSTM),一层LSTM负责前向传递,一层LSTM负责后向传递,之后按位置对两层LSTM的结果进行拼接,再经过全连接层给出标注结果,可以取得比LSTM更好的效果。

③Bi-LSTM CRF

CRF和Bi-LSTM的算法各有优劣,CRF可以通过结合全局特征给出全局最优标注概率,但依赖于人工构建特征;LSTM可以通过神经网络选择特征,但仅仅通过一个全连接层利用特征对每一个字单独进行分类,并不能保证全局最优结果,也容易导致非法标记序列的出现,比如B-Cgq后面出现了E-Ll。因此出现了组合Bi-LSTM和CRF的方法[38],在Bi-LSTM层提取双向特征之后接入CRF层进行全局标签预测,既有Bi-LSTM自动构建上下文特征的优势,也可以保证结果全局最优,不会出现非法标记。

命名实体消歧技术分为两种:实体聚类消歧和实体链接消歧[39]。随着知识库内容的发展,人们开始主要使用实体链接的方法进行消歧。实体链接消歧的任务是给出实体参照项目并将其链接到知识库中的实体。这种方法充分利用了结构化知识资源来帮助实现消歧过程,解决了信息不足的缺点。

命名实体消歧技术分为两种:实体聚类消歧和实体链接消歧。随着知识库内容的发展,人们开始主要使用实体链接的方法进行消歧。实体链接消歧的任务是给出实体参照项目并将其链接到知识库中的实体。这种方法充分利用了结构化知识资源来帮助实现消歧过程,解决了信息不足的缺点。 实体链接任务可以用一个六元组来表示,表示为

式中 A 表示待消歧实体名称集合,B 表示候选实体集,C 表示待消歧实体所在文档集合,D 表示实体指称集,即实体名称 Ai 加上 C 中的上下文信息,E表示链接知识库,F 表示实体链接算法。实体链接首先要生成候选实体,然后从候选实体中找出目标作为链接对象。候选实体指的是最初选择出来的可能作为链接目标的实体。生成候选实体的方法一般有字典映射法和检索排序法。生成候选实体集后,从中选择出最有可能的实体作为链接对象。

b)句子向量化

自然语言处理中,为了让计算机理解并计算自然语言,需要一种数学方法将自然语言符号也就是字、词等信息,转化为数字表示。在自然语言处理中最常用的方法是one-hot编码,这种方法使用词表大小的维度向量来表示每一个词,通过列举所有可能的结果,用每一位表示该结果是否出现,例如可以用[0,1]表示“男性”而[1,0]表示“女性”。不过这种方法只能简单表示词,不仅无法表述语义信息,也导致维度过高,计算复杂,因此在深度学习中,往往使用词向量的方法来表示语言。词向量是深度学习的产物,它包含了丰富的句法、语义特征,同时由于词向量的连续性,使得它能够在原本离散的无关联的词与词之间建立关系[40]

word2vec是一个使用比较广泛的开源的词向量生成工具包,它可以将输入的分好词的文本中的词语转换成向量的形式。以便后续方案的进行。

c)问题理解

目前,在短文本分类领域,常用的算法有 KNN、SVM、CNN、决策树、朴素贝叶斯等机器学习算法,本文涉及的用户问句特征均比较明显,问句类别较多,而且朴素贝叶斯分类速度较快,所以在问句分类模块使用朴素贝叶斯分类器。朴素贝叶斯分类法分为三个阶段:准备阶段、分类器训练阶段、应用阶段。

在准备阶段,由于网上并不存在传感器领域的公开数据集,因而需要自己设计问题模板,将模板作为训练集。设计的部分问题模板如表2.3所示。

表2.3问题模板举例

问题举例

标签

查询意图

我想测量拉力

1

测量%应用场景%的传感器

测量拉压力的传感器有哪些

2

%某种传感器%的%子类%

LTR-1M型拉压力传感器的综合精度是多少

3

%某个传感器%的综合精度

和LTR-1M型拉压力传感器功能相同的传感器有哪些

4

%某个传感器%的%同类%

在训练阶段,读取模板文件,用词向量表示模板的每个句子。模板每行可以看做一个训练样本,其标签是模板序号。而整个训练过程将使用torch框架来进行。

在应用阶段,先进行分词和命名实体识别。例如对于问题“LTR-1M型拉压力传感器的综合精度是多少”,命名实体识别阶段将“LTR-1M型拉压力传感器”识别出来,用抽象词“Cgq”代替,将句子转换为词向量,用训练好的朴素贝叶斯分类器进行分类,获得最高概率的分类标签,以此来进行问题的还原。

最后,便是构建查询。通过命名实体识别和问句理解,系统可以将用户问句转换为可以在 neo4j 中执行的Cpyher查询语句。系统的查询模块,使用 Python 第三方库 py2neo实现连接数据库和执行查询的操作。值得注意的是,如果基础的查询语句遇到命名实体识别错误或者用户输入错误的情况,在 neo4j中返回结果会为空,为了增强系统的实用性,最好在系统中添加了模糊查询功能。在Cpyher 语句中以符号‘~’ 正则表达式实现模糊查询。同样,若无法完全理解用户输入的意图或无法找到结果,可以通过一定的查询语句模板,返回提示。

3. 研究计划与安排

3.进度安排

(1)查阅相关资料,完成开题报告。(第1-3周)

(2)完成对英文资料翻译。(第4周)

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

4. 参考文献(12篇以上)

4.阅读的参考文献不少于15篇(其中近五年外文文献不少于3篇)

[1].2019年全球传感器行业市场现状及发展前景分析,预测2024年市场规模将突破3000亿[j].变频器世界,2019(12):39-40.

[2]李兆兆. 基于语义理解的智能问答系统关键技术研究[d].西安邮电大学,2019.

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。