第二个是统计和规则。在工业界,大家都不会说一个秘密就是正则表达式是最重要的一件事情。你现在要写文章,正则表达式是发不出去的。但正则表达式重要到什么程度呢?最近Micron公司已经开发了一个正则表达式的(硬件)处理器,就是真正工业界非常重视正则表达式一个很重要的标志。正则表达式只是其中一种啊,还有各种各样的规则,其实是非常关键的,林老师(林德康)刚刚也说了。
我们能够应用到统计的时候,我们要考虑很多前提。
样本有多大?样本量很小的话统计就不管用了。
我们有没有训练集?对于大公司而言,比如说做Distant Supervision,或者做那些分布式表示学习,它还需要一些准备的工作,人工的工作。对于初创公司或者小团队而言,未必能这样。
准确率要求有多高?搜索引擎正常情况下,它的正确率能够达到30%。但是我们觉得ok。对于问答引擎我们的要求有多高呢?对于不同的应用场景,比如说像这个小冰机器人陪聊的,错一点没什么,但如果是在医疗和法律领域就完全不一样了,你不能错。金融领域呢99%都不可以,正确率必须要有百分之百。在很多问题上面,这个时候要考虑到统计能不能做到百分之百?肯定做不到。
还有一个就是源数据的质量,决定了你最后能够拿到多少东西。源数据的质量如果很高的话,统计方法的效果就会很好。如果不行的话,就得花很多时间做data cleaning(数据清洗),这也是要成本的。
最后一点就是粒度。大家看到经典的教科书的知识图谱的定义的时候,会说是一堆实体,实体之间有关系,然后实体有属性。但实际上在工程应用当中未必一定要达到这样的粒度,因为要达到这种实体的粒度,是需要非常多的成本的。在每一个环节,我们都要付出巨大的代价,都是几十万、几百万、几千万的钱,往里面扔进去。所以从一开始的文档,到篇章,到段落(可能是图表),到句子、词,然后到实体,根据自己的应用场景,我们可能到某一个阶段可以停下来了。比如说用户他关心这个公司的商业模式是什么,这个商业模式通常是一段话,我们只要把这段话给定位出来,我们不需要到实体层面。所以这个“实体”是可以打引号的。在图上面的商业模式本身就可以作为一个实体,大概跟我们平常意义上的实体不太一样。所以在不同的使用场景下,我们不需要拘泥于说一定要实体,或者属性这种东西,够用就行。
下面一句话是我说的: 最低成本的结构依靠中学语文 。控制成本最核心的问题就是如何能够接近于人的认知,大多数人的认知。大多数人的认知水准是什么呢?就是中学语文嘛。高中是一个人的智力的最高点,高考过去最后那一天,在那之后大家都在走下坡路嘛。高中语文告诉我们,怎么去写作,分段落,分句,每段第一个句子是最重要的。在这里面有丰富的结构,丰富的信息,这种语义信息其实是最容易挖掘出来的。其实有很多人已经发现了也在用了。比如说以前我跟另外一组人合作,做一个Purple Semantic Mediawiki,它的用途就是这个wiki上每一段话我都可以在另外的wiki页面里引用。它每一个段落有自动生成的purple number,这是一个自动生成的URI,然后可以在另一个页面,只要你引用了这个URI,它自动就过来了,也是动态的。因为这是metadata(元数据),所以你可以查询,你可以把几个段落自由的组合在一起,就是有所谓的语义在这里头。
知识表示的成本
下面我们讲一下知识表示的成本。知识表示分成几个层次来讲,从最低层的就是我们有一个东西,给它起名字(命名),然后把这些东西关联在一起(元组),最终我们要发现这个关系背后的关系(本体)。
我觉得 降低知识表示的成本的核心就是怎么适应人类的认知的惰性 。因为我们大多数人其实都不想动脑子,包括每一个人在大多数时间也是不想动脑子的。而且人的智力的分布的不均衡性是远远大于人的体力的分布不均衡性的。这个有非常多惨痛的教训,包括以前我们做知识系统的可用性实验的时候,发现了大量反面的例子。就是专家开发出来的系统,哪怕是那种大学生级别的用户,都完全没有办法用,因为还是有认知的gap在那里头。我们怎么能够尽可能地降低这种不适应性?
另外我们每一个人都有自己的世界观。这种认知惰性、还有不一致性的核心,是我们大家的世界观是相互冲突的,我们能不能尽可能地隔离这种世界观发生冲突?我们能不能尽可能降低必须的、开始的投入?