知识搜索,对于一个企业而言,目前无论是在对内管理还是对外服务的业务上,都有着大量的需求,并表现出急迫性的特征。
例如,很多企业都积累了大量的企业知识资产,并且规模以每年200%的速度增长,其中80%以上的数据是以文件、邮件、图片等非结构化数据的形式,存放于企业内计算机系统中的各个角落,并且这些数据的总量,远远超过了互联网信息的总量,这些数据给整理带来很大的难度。
又如,银行各个部门拥有众多IT系统,系统中存储大量数据、信息,数据结构复杂,每个系统都拥有简单的“数据库检索”功能,但常常出现找不到、找不准、找不全,速度慢等问题。
因此,如何让不同领域的企业根据自身业务的需求,选择相应的搜索模式,提升搜索效率,显得尤为迫切。本期围绕“领域情报搜索”这一主题,分析现有的搜索场景,并结合当前我们的工作,从领域知识搜索的场景、知识搜索相关技术、知识搜索实践中积累的思考等方面进行相关内容的介绍。
一、 领域知识搜索的场景
不同的领域对知识的搜索需求不同,但最终的目的都是做知识的整合、梳理、索引和管理,并在此基础上提升客户应答效率。下面从常见的搜索领域和搜索功能两个方面介绍:
1、 常见搜索领域
1) 银行保险等金融领域搜索
针对银行业务、理财产品、保险的售前、售中以及售后环节提供垂直智能化服务支撑方案,面向客户、服务人员以及代理人提供系统化智能服务方案,为企业有效降低服务成本、强化组织管理、提升服务体验。
2) 电子政务与法律领域
针对政府机构,对便民服务、市长热线、来电办理、问题督办等场景在线智能处理,提供民众自主办理、快速响应。
3) 游戏娱乐等消费领域
针对游戏行业在注册、宣传、账号管理等核心场景,提供专属智能服务解决方案,面向广大游戏爱好者提供针对的方案,提供更好客户体验,有效提升客户价值。
4) 教育培训与医疗领域
将AI技术与教育行业深度集合,以师生服务、招生、教学保障为核心场景,通过手机APP、互联网等沟通渠道,为教育企业有效降低服务和教学成本,提升教学质量并能更高效挖掘潜在数据价值。
2、 常见搜索场景
1)知识定位搜索
知识定位搜索,指的是针对用户文档中的信息进行查找和定位的一类搜索模式。例如,对于答案在文中有明确结果的,返回确切值;对于答案隐藏在段落中的,返回文章中的细节段落;对于答案在文章表格中的,返回经过事先解析好的文章表格内容和具体位置等信息。
从定位的数据类型来看,大致可将搜索分为句子/段落/全文型、表格型和图片型三种,图片型是其中值得关注的一类。例如,金融领域许多研究报告、公告当中包含着大量记录和反映数据指标的图表,该图表作为检索的对象,既可以方便写作素材调取,也可以作为文本聚合的重要参考依据。
图1-基于报告的图片搜索示意图
2) 知识实证搜索
“实证搜索”是当前一种可信的搜索模式,与直接给出问题答案不同,要求在给定具体结果的同时,将答案的来源给出,这样能够提升用户对知识的把控和鉴别能力。例如,“学迹”中的“学习来源”,就是对结构化答案的实证实践。
图2-基于实证的知识搜索示意图
3) 知识结构化搜索
结构化搜索,又称图谱搜索,即一类以非大段文本和知识卡片形式进行知识问答的搜索模式,其特点是简洁、明了和结构化,在谷歌上线知识图谱问答以来,成为了一个很火热的方向。例如,下图中以“生产口罩的公司”为例,可以得到以下结构化数据:
图3-结构化知识搜索示意图
3、 知识搜索模式变迁
目前知识搜索先后经历了传统全文检索模式、FAQ模式以及泛QA模式三种模式的变迁,三种方式对技术的要求也不断增加,下图中列举了对应的优势和劣势。
图4-知识搜索模式变迁示意图
在实际的业务实施过程当中,我们常需要根据具体的问题,选择相应特定的应答策略,这通常表现成一个多问题类型集成的泛QA模式,需要充分考虑搜索引擎、业务系统对接、搜索系统管理以及其他能力调用等模块之间的协作。
图5-泛QA知识搜索模式架构示意图
二、 全文检索范式下的场景搜索
全文检索是当前我们所能看见最多的一类搜索方式,百度、谷歌、必应等搜索引擎,绝大多数服务都基于全文检索实现。
1、关键技术
全文检索通过在服务端预先对待搜索字段(如标题、正文等)进行分词、倒排索引,在搜索端通过捕获用户搜索内容,利用搜索引擎(如solr, es)中内置的匹配排序算法(如BM25,TFIDF)进行排序,最终将结果返回给用户,下图展示了一个典型的全文检索功能架构。
图6-全文搜索架构示意图
全文索引、搜索字符串扩展和搜索评分模型是全文检索中三个核心模块。
首先,全文索引的前提是整篇文档都已经是纯文本形式或处于可索引的状态,因此,这就需要针对不同的文本如PDF、DOCX等文档进行解析和转换。
图7-全文搜索文档转换与解析路线图
在某些情况下,还涉及到表格的解析、段落的记录以及图片的分离等操作,如通过对表格进行纵横两个方向的扫描组合方式,将表格中的数据转换成可检索和标引的数据类型。
图8-全文搜索表格解析示意图
其次,使用用户原始字符串(或经过停用词等处理)进行匹配,无法直接解决“同义不同形”的问题,即“召回率低”。构造同义词库配置、保留专有词汇、可插拔的相似度算法,先全文候选后相似度二次计算是其中的两个重要解决方式。
图9-全文搜索内置引擎示意图
最后,在搜索评分模式上,可以根据采用的搜索引擎框架,干预其评分模型,如ES中提供了更改评分函数的接口,可以根据实际的业务搜索需求,将其他评分因素加权到原有评分函数当中。
2、项目案例
金融领域的底稿管理是全文检索方式的一个用武之地,例如,项目现场底稿数量繁多,撰写材料所需数据分散,数据查找繁琐,易遗漏,整理归档、材料查询费时费力。为此,进行纸质底稿电子化,方便数据整理、版本管理,可以让数据查找更方便、更全面,节省用户时间,下图是该项目的实际搜索效果:
图10-全文搜索项目上线运行截图
三、 FAQ范式下的搜索
FAQ是英文Frequently Asked Questions的缩写,中文意思就是“经常问到的问题”,或者更通俗地叫做“常见问题解答”,是较全文检索信息进一步聚合、回复进一步精确的搜索方式。
1、关键技术
FAQ实施的过程包括两个核心点,即:问答对数据的构建和问题匹配评分模型。
其中,问答对的规模取决于具体的业务积累,在前期冷启动环节中常需借助业务专家标注,设定一些相关的标准问答对。
问题匹配负责将用户的自然问句和问答库中的问题进行匹配,找出最佳标准问,常见的方式包括基于es相似度,编辑距离等传统方式,siamese孪生网络、BERT-finetune等深度方式。此外,针对问题较为复杂的场景,还常有问题分类这一前置任务。
问句压缩,是FAQ模式的一个重要技术,由于FAQ的问题通常较短,用户在提问的过程当中,往往会夹带着一些主观噪声(即我们常说的口水句,如下图),这会对实际的标准问匹配造成困扰。
图11-FAQ口水句压缩效果示意图
针对这类问题,解决的方案包括基于语法树分析与关键词的规则方法以及基于文本摘要和句子压缩的方法。前者通过标点或空格将长句分割成若干个短句,对短句进行口水句分类,然后基于概率和句法分析进行句子压缩,尽可能剔除非必要成分,只留下关键词、主谓宾等核心成分。后者的可用模型较多,从传统的textrank到采用RNN、CNN等的深度学习模型,均可以生成相应的摘要效果。
此外,问题纠错也是FQA(不限于FAQ,KBQA以及全文搜索范式都需要用到)的预处理流程之一。常见的解决方法包括字典+规则的纠错以及基于神经网络模型的纠错两种。
图12-问题就错技术路线示意图
2、项目案例
针对该类的搜索,我们针对法律领域,完成了基于20W法务问答对的13类问题分类与法律资讯问答搜索系统,在问题分类步骤,达到了96%的准确率。
图13-FAQ项目上线效果示意图
四、 KBQA范式下的搜索
KBQA是针对结构化数据的一种直截了当的问答方式,可以根据设定的问题类型,通过问句解析的方式,形成若干三元组及相关的操作条件,并转换成特定的查询语句,直接返回相应结果,是当前一种较为流行和新颖的搜索方式,但技术还较为早期。
1、 关键技术
1) 意图分析
意图分析是KBQA范式下的第一步,其任务在于对用户所提出的问题进行问题分类,因此又称为意图分类。由于不同的问题所涉及的问题要素不一,后续所需进行的标签识别、条件体与目标体识别也不同,意图分类的准确性会影响整个后续环节的性能。
问题分类的方法主要包括基于学习和基于规则两种方式。例如,在本文提及的FAQ法律问答当中,我们针对13类问题语料进行训练,得到了基于学习型方法的问题分类,在缺少训练语料时,基于关键词和规则的问题方式往往成为首选,下图针对医疗知识问答中提出的几类问题,给出了规则示例:
图14-意图分类中关键词与规则示意图
多意图分类是问题解析中的一个难点,用户往往会在一个问题中表达多种意图,这时候,需要采用多分类模型对其中所涉及到意图进行捕获。
2) 标签(实体、操作符)识别
标签识别,是指识别出与目标数据库中相关联的实体、属性、关系或操作符集合,也有人称为槽位识别。实体识别包括常见的机构、日期、金额、地点、人物等实体,职位、指标名称等属性关系。
包含操作符的回答是处理难度较大的一类,如我们会经常涉及到一些最高、最低、平均、总和、相差多少等问法,这种问题比确定性问题的解决方法要复杂一些,下图列举了一些常见的操作符示例。
图15-标签识别中的操作符示意图
3) 条件体与目标体识别
在识别完特定的标签之后,还需要在此基础上形成可供查询转换的条件部分和目标部分。条件体,即在进行答案搜索过程中需要进行匹配的条件,如某个实体或标签应该满足的属性值或关系类型(也常称为意图槽填充)。目标体指具体需要返回的数据,通常包括某个实体或标签、某个实体或标签的属性或关系、符合条件体的布尔型数据(是否存在这样的数据)。
用于条件体和目标体识别的常用的方法包括基于问题模板和基于标签依存两种。
例如,在进行电影知识图谱进行问答时,在识别出电影名称、人物、角色等标签后,可针对某一类问题,自定义识别模板。下图给出了“演员导演作品”、“作品导演”、“导演自导自演的作品”三类问题的模板示例。
图16-条件体与目标体识别模板示意图
自定义模板映射的方式具有准确率较高,易维护和扩展的优点,但人工成本要求较多,同一个问题通常会有多种不同问法,在短时间内无法穷举所有可能。
依存关系的引入,在一定程度上解决了这一难题,构建起所识别的标签之间的父子关系,可对条件体和查询体进行准确定位。我们为此设计了一种标签依存的识别方法:将实现识别好的标签组成一张图,并通过计算标签与标签之间的可能关联,利用动态规划的方法,找出标签之间概率最大化的依存路径。
图17-数地工场问句标签依存解析效果图
上图以“比亚迪的老总和董秘是谁”这一问题出发,通过识别出比亚迪(公司实体)、老总(职位关系)、董秘(职位关系)并进行统一标准化后,进一步形成 <Root,比亚迪>、<比亚迪,董事长>、<比亚迪,董事会秘书>两个父子依存关联,这种关联关系在图中清晰的展示,该接口已经上线到数地工场中,欢迎大家测试和使用。网址:https://nlp.datahorizon.cn
2)查询语句生成
查询语句生成是整个KBQA过程中的最后一步,通过问题意图分析之后,得到了查询体中的条件体和目标体,即可以通过模板转换的方式,进行语句的映射和转换。
当然,查询语句的转换要和目标数据库相对齐,如下图分别展示了以ES、Cypher、SPARQL三种目标数据查询语句的生成方式。
图18-面向ES,Neo4j,RDF的查询语句生成过程图
2、项目案例
1)KBQA-Neo4j组合的医疗知识问答
Neo4j是目前使用规模较大的一类图数据库,其具有多层关系存储、路径搜索推理等多项应用场景,并提供了人性化和语义化的查询语句cypher。
本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,11类规模约30万实体关系的知识图谱。
该知识图谱中记录了关于诊断检查项目、医疗科目、疾病、药品、食物、在售药品、疾病症状等多项医疗实体,疾病常用药品、宜吃食物、所需检查、忌吃食物、推荐药品、推荐食谱等实体属性信息项,疾病名称、简介、病因、预防措施、治疗周期、治疗方式、治愈概率等关系信息,可以支撑关于这些信息项的问答服务。
该项目利用基于关键词的方式完成问题分类,基于规则完成了问句解析和查询语句转换,以一种较为简易的方式提供了预设的问题回答服务,初步取得了一定的效果。
图19-医疗知识图谱问答过程与效果图
3、KBQA-Mongo组合的军事武器装备知识图谱问答
Mongo作为一个文档型数据库,也是知识图谱的一类重要存储方式,基于构建好的mongo结构化数据,采用相同的前置问答解析方式,转换成mongo的查询语句,即可输出相关结果。
我们通过对开源的军事武器装备数据进行整合、清洗和融合,建成了规模达到十万的军事武器信息三元组,共包括8大类、148小类的武器装备。基于该武器装备知识图谱,提供一个基于模式和打标签方式的问答系统。
值得注意的是,在该项目中,我们巧妙的借助了jieba的词性标注功能,快速地进行了相关实体的识别与解析,提供了用户模板的配置接口,基于查询模板完成多类问题的查询,并展示了这一问答过程。
图20-军事知识图谱问答过程与效果图
4、KBQA-MySql组合的钢铁领域知识问答
同样的,Mysql也是KBQA范式中常用的一个数据库选型,传统的mysql关系型数据库广泛适用于银行、学校等信息系统当中。因此,在实施的环节中,只需要根据sql查询语句,在sql生成的阶段作相应的调整。
在项目上,我们研制了面向钢铁领域的一套自动问答系统,并构建了涵盖多个交易所期货的资讯数据、情绪数据和关联指标数据库,提供资讯类问答、情绪类问答、数据指标类问答三个方面的服务。
例如,对于问题“今天螺纹钢有哪些利好资讯”,可通过对“螺纹钢”进行期货名称识别、时间项识别与情绪项识别,形成搜索条件,完成搜索并以结果列表页的方式进行返回;在问及某一期货的情绪和关联的指标时,可结合图标可视化的方式加以表达。
该项目引入了对结果的可视化组织方式,以一种更为鲜明、友好的方式加强用户的搜索体验。
图21-钢铁领域知识问答过程与效果图
五、 知识搜索的几点思考
利用现有的知识抽取和知识搜索技术,的确可以在一定程度上满足一些搜索场景的需求,但在具体搜索项目课题立项以及项目实施的过程中,依旧存在多个需要考虑的关键点、误区和风险点。
1、实施关键点
1)明确搜索的对象:受众,面向个人or面向统一平台的,DIY式的搜索和大众搜索所带来的维护成本、开发成本时截然不同;
2)确定问题的边界:有所问,有所不问。这个尤其重要,需要将用户问题约束住,切勿脱离数据而设定问题,脱离现实技术而设定问题,以免预期落空;
3)根据问题找数据:需要根据预先调研和确定好的问题来构建相关的数据库。如前面所提到的,若是走问答对的形式,则走问答对构建以及问句类型设计的路线;
若走全文检索的路线,则需要根据所需检索的字段确定搜索的单元,如针对文档内部的搜索,常常需要将文档的层级结构信息,段落、子段落、常句、表格、标题等进行有效索引;
若实施KBQA,则需要构建相应的结构化数据,并考虑多个不同结构化数据库的存储、通信、后续数据的接入问题。
4)关注搜索架构的鲁棒性:一个成功的搜索系统,需要从搜索性能、搜索变更能力、搜索维护压力、数据的标准化、外围数据接入与通信方式等多个方面进行考虑,尤其是在系统升级的过程中,能够做到快速、平稳的切换。
5)关注数据的安全性与更新机制:一个搜索系统,在上线运行之后,通常会处于一个不断积累数据和功能扩充的状态,涉及到数据的安全性问题,这个在银行、涉密等多个环境下尤为重要。
2、误区与风险点
1)认识要冷静:AI搜索助手没不会那么”AI”,大多时候会觉得它很“智障”,尤其是现在“神化知识图谱”或“神化KBQA”的风气不减的当下,更是要保持冷静。
2)预期要实际:“深度学习”有所为有所不能为,需要大量的人工、规则、模板,动辄的“模型迭代”和“自我学习”在工业级场景大多很难实施,受到人力、算力、客户忍耐度、维护等多方因素的制约,警惕将学术论文评测的做法引入到工业级落地当中。
3)人机结合是正道:选择平稳、可靠的AI助手的最佳方式:灵活可配置的人工参与接口,可迭代升级,尽可能减少后期维护成本额,这样才能省心、省人力。在整个项目实施上,可以小步快跑,步步迭代,切勿超之过急,先做好每个细分功能点
4)数据整合占大块:功能的设计、业务的梳理、数据的整理,占据整个项目超过70%的时间。针对不同数据库之间的搜索,需要花费大量的人工进行数据梳理;针对结构化查询,需要准备大量的外部知识库(业务词典、同义词词典等)。
5)项目设立要慎重:在确定是否需要建设一个搜索系统之前,需要考虑当前的数据类型是否适合于搜索,自己当前的资源是否能够支撑搜索代价,预设的数据架构是否能够涵盖后续的数据类型,不慎的话会影响后期维护和扩展。
六、 总结
不同的领域对知识的搜索需求不同,但最终的目的都是做的知识的整合、梳理、索引和管理,并在此基础上提升客户应答效率。本文结合我们团队的工作,对知识搜索这一内容进行了相关的分析。
知识搜索,在银行保险等金融领域、电子政务与法律领域、游戏娱乐等消费领域、教育培训与医疗领域上有大量搜索需求。
知识定位搜索、知识实证搜索以及知识结构化搜索是先有搜索服务的三种常见搜索场景,为了支撑该搜索,常用的搜索范式包括基于全文检索的、基于FAQ的,基于KBQA三种路线。
文本预处理以及全文匹配搜索评分是全文检索的两个核心点,我们在金融领域的底稿管理这一项目中进行了实践,提升了底稿业务的效率;
问答对数据的构建、问题匹配评分模型、问题的压缩、问题的纠错是FAQ搜索范式的几个关键点,我们以法律咨询问答项目中对该技术进行了验证和实践,可快速地针对用户问提给出准确答案;
KBQA搜索是面向结构化数据搜索的重要搜索范式,我们分别从医疗知识图谱问答、军事武器问答、钢铁领域知识问答三个项目出发,探索了图数据库、文档数据库、关系型数据库的对接策略,提出了基于模版可灵活配置模式的标签识别、标签依存关系识别的方法,具有鲁棒性的优点。
在具体搜索项目课题立项以及项目实施的过程中,存在着多个风险点和关键点,我们需要明确搜索的对象、确定问题的边界、根据问题找策略、关注搜索架构的鲁棒性、数据的安全性与更新机制,此外,还要充分保持冷静、预期实际、承认人机结合的科学道路,并认识到前期数据整理和设计需要花费的代价。
参考链接
[1]https://xueji.zhiwenben.com
[2]https://nlp.zhiwenben.com
[3]https://liuhuanyong.github.io
[4]https://www.iwencai.com
[5]http://www.iwencai.com
[6]https://ask.shannonai.com
[7]https://www.bilibili.com/video/BV1Ub411H73G