3

知识图谱在贝壳找房的从0到1实践

 2 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA4OTk5OTQzMg%3D%3D&%3Bmid=2449231544&%3Bidx=1&%3Bsn=dc5d489fd867cbd58018c96afb916c17
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

知识图谱在贝壳找房的从0到1实践

Beyond Search 2018-09-06 03:57
Beyond Search:
贝壳找房知识图谱实践,一手货源,干得出奇。

2018年8月11日,贝壳找房高级知识图谱⼯程师王贺青在DataFunTalk人工智能技术沙龙——“AI在智能客服、知识分享、知识图谱等领域的应用实践”中作了《知识图谱在贝壳找房的从0到1实践》主题干货分享。整理成文字版,供大家享用。

知识图谱(Knowledge graph)技术是近几年比较热门的人工智能技术,它已经被广泛地应用到智能搜索、智能问答、智能推荐等智能系统中。贝壳找房有哪些业务可以用知识图谱的技术进行赋能,怎么构建房产领域知识图谱,让我们一起来探讨下吧!

下面的分享主要有有四个部分,第一部分简单介绍下知识图谱,第二部分介绍下为什么“可以&要”在贝壳找房中落地知识图谱,第三部分介绍下贝壳找房中的知识图谱落地应用,最后分享下存在挑战和未来展望。

640?wx_fmt=png

知识图谱到底是什么

首先一起追溯下知识图谱的发展简史。上个世纪60年代Quillian提出了语义网络,作为知识表示的一种方式,用于描述物体概念与状态及其间的关系,早期主要是用来帮助自然语言理解。到上个世纪80年代,人工智能研究人员将 “本体”这一哲学概念被引入计算机领域,把本体定义为“概念和关系的形式化描述”,通俗一点讲本体类似数据库中的Schema,这一时期的一个典型应用就是专家系统。1989年Tim Berners Lee提出了万维网,也就是我们今天使用的www网络,然后1998年从超文本网页延伸出语义网络概念,将每一个网页引入语义信息,比如:姚明这个页面,归属类别是人物、运动员。到了2006年提出了链接数据概念,目标将互联网上所有数据建立关联,如姚明的页面出现他妻子叶莉,会给“叶莉”加一个链接,链接到叶莉这个页面。在2012年Google率先提出了知识图谱,目的是提升整个搜索效果,从此知识图谱技术开始得到广泛学习和应用。

640?wx_fmt=png

知识图谱旨在描述真实世界中存在的各种实体或概念及其间的关联关系。首先,每一个实体用全局唯一ID来标识,就如同每个人都有一个自己的身份证号;其次就是用属性-值对来刻画实体的内在特性,用关系来刻画实体之间的关联。如刻画姚明这个实体:属性-值<姚明+身高+2.26米>,关系型<姚明+妻子+叶莉>。

640?wx_fmt=png

从知识图谱的一个发展史及其定义可以总结出知识图谱具有5个视角的优势。Web视角:建立数据之间的语义链接、⽀持语义检索;NLP视角,利用NLP技术从文本中抽取结构化语义信息;KR视角(知识表示):利用计算机符号表示和处理知识;AI视角:利用知识图谱辅助理解人的语言,目前AI落地大部分是在垂直领域,会建立自己的知识库帮助垂直领域人工智能成功落;最后是DB视角,知识图谱展开其实是一个很大的知识网络,利用图数据库存储。

640?wx_fmt=png

目前知识图谱应用场景分为两种,一种是通用领域,一种是垂直领域。通用领域如Google搜索,国内百度和搜狗也有在搜索中应用知识图谱技术;还有些智能硬件应用,如智能机器人、智能手表。这种应用也会用到通用知识图谱,构建依赖国外维基百科、freebase,还有国内百度百科、维基百科、互动百科、搜狗百科等,从这些页面中抽取出结构化三元组构建知识图谱来支撑通用领域的问答和搜索。垂直领域应用越来越多,如金融、电商、公共安全、电信等,具体如金融里面的反欺诈,公共安全领域的追捕犯罪分子。

不管是通用领域还是垂直领域落地有几个共性条件:第一必须有结构化的数据,这个数据还要高质量,尽可能的海量数据;第二在数据之上抽象出一个本体库,在本体层面去定义实体类型,以及每个实体的属性和类之间的关系;第三就是有可以利用数据和本体库的智能应用场景。目前知识图谱支撑的领域有搜索、问答、推荐、图数据关系挖掘。想确定自己业务场景是否“可以&要”知识图谱,要看自己是否具备这些条件。

640?wx_fmt=png

为什么在贝壳有用武之地

下面介绍下知识图谱为什么能在贝壳找房中落地。首先我们有丰富的数据可以利用,有两个维度:结构化数据和非结构化数据。结构化我们有楼盘字典,这也是我们在垂直领域私有的数据,有亿级别实体,数十亿级的三元组。覆盖类型有房源、客源、小区、学区、地铁站静态数据,也有带看、成交等动态数据。还有非结构化文本数据:经纪人与用户对话数据,数亿级别量级,主要是用户找房、咨询经纪人、委托、带看、成交过程中产生的对话文本数据。第三种是用户问答及百科文章,百万+级别量级,主要是用户产生的关于房产领域的问答及百科知识数据。

640?wx_fmt=png

下面再来介绍下我们为什么“要”在贝壳找房中落地知识图谱,因为贝壳找房有丰富的应用场景,如智能搜索&推荐:提升用户的找房效率;数据可视化:分析用户行为,挖掘数据之间关联;智能问答:做经纪人的助手。

下图是贝壳找房业务中的商业转化漏斗。

640?wx_fmt=png

这个过程涉及用户找房、到咨询经纪人、委托经纪人带看,最后成交几个环节。我们的目标就是拓宽这个漏斗图,帮助经纪人获得更多更优质的商机,以及提升他们的服务能力;帮助用户快速找到合适的房子,了解购房知识

640?wx_fmt=png
在智能搜索方面:借助知识图谱AI+Web特性优势, 帮助提升搜索意图理解;在智能推荐方面:借助知识图谱的AI+DB特性优势,推荐相关的房子;在智能问答方面:充分借助知识图谱NLP+AI特性优势,回答经纪人有关房子的问答。右图示意了在我们房产知识图谱中搜索一个学校时,我们可以看到与这个学校相关联的房源和学区等实体信息。

知识图谱如何在贝壳落地

接下来分享在贝壳找房中的知识图谱落地应用。一个知识图谱系统构建流程通常有五个部分,第一个是定义具体的业务问题,第二个数据搜集与处理,第三个是知识图谱的设计,第四就是知识图谱的存储,最后是应用开发及系统评估。

640?wx_fmt=png

我们的知识图谱系统架构有五层,如下图所示。

640?wx_fmt=png
在数据层会有爬虫平台爬取的外网数据,大部分数据是内网数据,数据分为结构化数据和非结构化数据两部分。处理层有预处理、归一化、数据融合以及推理计算。预处理方面有结构化数据转换、半结构化数据抽取、文本关系抽取、数据标注;处理完后会做一些实体名、属性、属性值归一工作;数据融合会做实体对齐工作,因为实体会来自于不同的源,但是表达的是一个实体,可能存在交集或并集,或者一个属性有多个值,会做一个属性值的决策。推理计算会基于现有的数据做一些规则推理补充、pagerank值计算、增加排序字段。整个处理层结束后会形成一个知识图谱,建立ES索引或者neo4j索引,在hdfs或者hive上进行备份,支持不同业务方数据调用。应用层有IM智能助⼿、智能客服、智能搜索、图谱可视化。左边是我们的模式层,从类型定义、属性定义,最后构建成本体库。本体库的作用就是支撑数据层、存储层、应用层的工作。

构建本体库使用构建工具protégé,主要有三块,第一块是Class定义;第二部分是ObjectsProperty定义,这是个关系型的属性,描述两个实体关系的属性;还有Dataproperty定义,这个是内在属性,描述实体本身的属性。正常本体库构建是自底向上,从数据层出发。但在我们的业务中会需要一些自自定义的属性,加入一些特殊的约束,因此采用自底向上与自顶向下相结合方式构建本体库。在构建的过程中也加入了对属性关系的自定义约束,如是否加密、显示顺序、是否归一化等约束。

640?wx_fmt=png

接下来介绍下知识图谱在IM智能助手中落地,应用场景是更快解决用户问题,提升经纪人的作业效率。利用经纪人与用户历史聊天数据进行了聚类,用户主要问五种类型问题,75%是房屋详情问题、11%是约带看、6%是贷款、3%是推荐,还有5%咨询。右图是占比最多的75%问题中top20意图占比,问最多的是学区房问题。从0到1做这个事情,我们优先解决主要问题,也就是占比最多的房屋详情问题。

640?wx_fmt=png

为了解决这个问题进行数据搜集与处理流程,首先从楼盘字典中获取所需的房源数据,然后进入知识图谱构建流程,完成后会计算其覆盖率,判断数据是否符合预期,符合后才会建立索引,也会对异常进行一些监控报警。

640?wx_fmt=png

IM智能助手房源详情检索架构,首先用户问了一个问题,经过NLU模块中的分词、NER模块实体识别,DA做字段解析,然后意图识别。意图识别结束后进入检索模块,生成SQL,通过ES索引查询字段,查询到的字段进行结果的生成。结果生成阶段有个话术设计,让回答结果更人性化,还有个结果拼接。后期会针对不同经纪人自己定义话术模板。

640?wx_fmt=png

IM除了有关房子本身信息问答,还有有一些关于房产领域知识的问答。之前是采用传统搜索方式(关键词、语义相关度计算)解决,但是会存在有些问题答案不匹配,不是很精准,那么如何解决呢。我们对用户的问题进行了分类分析,用知识图谱技术将问答对抽取成三元组和事件三元组。遇到一个事件是为什么和该怎么办,我们结构化抽取得到why和how事件型三元组;还有实体三元组,实体是什么和实体的属性是什么,定义为what和ep型。还有which型:实体A和实体B有什么区别。通过历史log随机抽样,符合三元组模式10%。

640?wx_fmt=png

如何精准理解用户搜索意图,找到精准答案。如“公积金贷款条件?”我们会把公积金贷款作为一个实体,将条件作为一个属性,这种就是ep型,还有“砌体结构墙是什么?”这种就是what型。“签错定金类型了怎么办?”,将“签错定金类型了”定义为event,“怎么办”定义为属性,同时会做一个属性归一化,把“怎么办”归一成“解决办法”,这种归为how型。这样的搜索是一种基于语义的精准搜索而不是传统基于关键词或者语义相关搜索。

640?wx_fmt=png

基于三元组的精准问答,分为online和offline。

640?wx_fmt=png

offline模块我们会离线地从FAQ( Frequently AskedQuestions,常见问答库)中进行三元组的抽取工作,挖掘出符合三元组的问题,并抽取出三元组。online模块同样用户query来了,首先走三元组意图识别,然后走对应的检索逻辑,最后返回一个符合条件的三元组答案。当然挖掘得到的三元组需要走一下人工标注的流程,以保证三元组知识库的精准度。

在我们贝壳找房业务中,还有一些别的场景知识图谱应用。通过知识图谱检索挖掘两个实体间的关系;如果我们知道了用户不同搜索间的关系,可以更好地做搜索召回优化。当我们搜某一个小区的房子,如果没有相应房源,我们是否可以利用知识图谱推荐这个小区附近小区的房子呢?

640?wx_fmt=png

下图是我们内部研发的图谱可视化平台,将贝壳找房所有涉及到的实体进行可视化展示。

640?wx_fmt=png

目的是展示房产数据之间关联关系,后期让C端用户找房子时候不仅仅是被动获取一个搜索结果,返回什么就看什么,可以主动地在知识图谱知识网络中漫游,寻找自己想要的房子。

总结下分享的主要内容,首先是介绍了知识图谱特点,罗列出知识图谱五大视角优势:Web + NLP + KR + AI + DB;然后介绍了知识图谱在通用领域和垂直领域众多应用,归纳出知识图谱落地三个充分必要条件:数据 + 本体库 + 智能应用场景;最后介绍了贝壳找房中知识图谱落地:1.房产行业数据:结构化楼盘字典数据 + 非结构化房产文本数据;2.房产行业本体库:支持图谱构建 + 智能应用;3.房产智能应用:智能搜索 + 智能问答+ 智能推荐 + 房产数据可视化。

一些坑、心得和展望

最后和大家分享下我们实践过程遇到的问题:1.构建规范的房产本体库需要房产行业专家的加入;2.房产行业实体类型、实体词需要规范化及挖掘;3.大量房产行业非结构文本数据亟待结构化。未来的挑战:打造出房产领域最权威的知识图谱;提升B端智能应用效果,逐步推向C端;将知识图谱深入结合贝壳找房业务场景深入结合,将图谱与地图找房、VR找房应用相结合。

※ 关于作者 ※

【王贺青】贝壳找房高级知识图谱工程师,现负责贝壳找房房产知识图谱的研发及落地应用。曾就职于搜狗,参与搜狗搜索通用领域知识图谱研发及应用。

★ 猜你喜欢:「对话交互时代的各种Bot:可控性与智能性的权衡

640?wx_fmt=png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK