其次,朴素贝叶斯假设的就是文本当中的词汇与词汇之间是相互独立的,跟我们的业务也不相符合,比如之前提到的“态度不好”这两个词基本是会关联出现的,不会单独分开出现,如果单独统计也就失去了意义。
所以我们发现当我们的业务描述语言和业务描述逻辑非常复杂的时候,统计的准确度都不会太高。刚才又提到需要自动提取对象属性评价用户观点,一开始用户的观点是在讨论一个个话题,是不是可以用基于LDA这样的模型完成话题的提取呢?
我们也做一些尝试,最后发现像LDA提取出来的话题有时候过粗,不适合我们的具体业务,比如我们想要的是“柜员态度不好”,最后只能精确到柜员描述的层面,作为一个非精度的模型比较难以调优,有某几个话题质量不是太高甚至存在重复话题的时候,没有办法做针对性的调优,最重要的一点还是它的可警示性比较差,分析出一些主题之后没有办法把话题归纳成我们所需要的对象属性的评价形式。
既然我们尝试过一些典型的传统方法不太适用的时候,接下来怎么办?我们选择了本体模型,从具体的实际业务出发建立这样一套适用于业务的一套本体体系,首先介绍一下本体是什么概念?
本体最早是一个哲学概念,在哲学层面指的是现实世界中事物的具体存在,比如我手上拿的话筒具体的事物存在就是本体,比如我们还可以称它话筒或麦克风,甚至可以拿一张话筒的图片来描述它。
把本体概念引申到信息科学的语义层面就变成知识科学体系。首先我们用本体表示多层次的业务分类或具体的业务目标,本体业务可以由要素和概念两个不同的层面构成,要素是业务层次,一般描述业务对象或业务属性,这跟我们的专业领域相关,需要专家来维护,在银行领域就需要维护像“信用卡”和“借记卡”这样的业务要素。
概念是语言层次,描述基础的语言概念,比如说我们对时间怎么描述、对地点怎么描述,包括人的情绪或者人对事物的评价等等,这些语言概念由于基础的资源,它跟专业的业务领域是不相关的,这就可以由我们的技术人员协助业务专家做一些收集和积累,比如说常见的一些语言概念,比如对于“不及时”怎么说,对于“异常”有哪些说法。
在我们的设计当中把业务层次和语言层次进行了相互分离,这样的事情就有两方面的好处,我们的业务专家就可以专注在业务要素的维护上,而不需要再去关注语言上的表达细节。另外,这些语言概念有些是不相关的,就有比较高的附庸性。
本体模型的示例和难点
具体模型示例,我们建立的银行客户建立本体体系,跟刚才提到的客户分类体系是完全一致的,这里面有一个本体叫“工作人员”,它又可以和对象要素和属性要素进行关联,对象要素包括柜员、保安、保洁、大堂经理,属性要素包括态度、业务熟练度,本体和要素又同时可以从第三个层次“概念”里相互关联,概念像好、快、热情、熟练、故障。
通过对象要素、属性要素和评价概念这三者进行相互连接和组合就能够构成我们对工作人员这个本体挖掘表达式的设置,从中得到我们想要的三因素,比如像柜员态度好、大堂经理业务熟练,同时我们只要知道这个观点是在描述柜员或者保安,能够把这样一个情况给分类到工作人员这个类别下。
刚才介绍到这里的时候大家会感受到一个本体模型明显的问题和难点,这些本体还是依赖于人工梳理,人工很难,我们采用的是基于深度学习的本体半自动构建方式,其中一个方式就是对文本当中邻近词汇做剪辑,我们具体使用的是 Google 开源的 Word2Vec 词向量模型。