四、总结
前面把聊天、问答、对话、语义解析怎么跟知识结合起来做了简单的介绍。接下来做个总结:
第一,为什么人机对话系统很重要?
1、它有可能成为物联网时代的最主要交互形式,类似于 OS。
2、知性会话的核心是知识图谱。它最重要的是做两件事情:一是线下要做基于知识图谱做多源数据的融合,二是在服务时要做基于知识图谱聊天、问答、对话、操控一体化。
3、从技术上来讲,深度学习和知识图谱技术的结合是目前最重要的一个趋势。我个人比较看好 Sequence-to-Sequence 模型,因为它的表达能力非常丰富,而且应用场景非常多,基本上自然语言处理里面大部分的问题都可以建模成一个 Sequence-to-Sequence。包括我们的翻译是一个语言到另外一个语言,还有聊天问答甚至拼音输入法,就是把拼音序列转成文字序列等等,还有做分词、词性识别、命名实体识别等等都是 Sequence-to-Sequence,这种模型分为 encoder 和 decoder 两个阶段,它在不同的阶段都可以把一些知识融合进去。
第二,在人机对话系统里的技术演进是怎样的?
1、在对话里不能只看语义,还要看语用,语用就是「语义+语境」。
2、我们不能只做闲聊式的机器人,而且是希望我们机器人是掌握领域知识,它是有文化的,而且文化水平还很高,是个领域专家,是知性会话。
3、流式对话。我们目前跟音箱的交互都是先唤醒,说「小爱同学,给我点首歌」,又说「小爱同学,播放下一首」。非常麻烦,但人和人对话是不会总频繁叫人的名字的,这时候就需要流式对话,这块的技术难点是怎么判断一个人说话是不是说完了,你是否可以打断,这是目前技术上最难的一点。还有一个是怎么去拒绝噪音,因为现在对话是没有唤醒词的,这时候旁边人的说话甚至电视里面说的话很有可能被误识别,机器也会对它做响应。
五、答听众问
Q:我们公司在构建电商的知识图谱,但是电商的数据是每天都会更新的,有什么好的办法对知识图谱进行更新吗?而且基于 neo4j 的图谱如何做知识推理?
A:这是个好问题。我们刚才强调知识图谱要敏捷构建,敏捷构建就意味着你可以频繁的发版本,这时候就有版本合并的问题,其实也是更新的问题。更新这块主要的技术是知识本体的融合或者知识实体的匹配、实体的对齐。如果更新的数据量不是很大的话,我建议的方法是先通过实体对齐的技术,把更新的数据自动添加到知识图谱里去,如果量不大的话还需要做人工的 review,看更新的数据是否 OK。这个我认为也没有什么特别好的办法,因为更新本来就是知识图谱里最难的问题。
neo4j 的图谱如何做知识推理?首先,我个人认为它不太适合存储海量的知识图谱,电商的数量应该很大的,这时候用 neo4j 合适不合适还有待商榷。如何做知识推理?我们一般认为知识图谱最主要的是知识,尽量少去做推理,因为推理是挺难的一个东西,而且也没有特别工业化成熟度很高的工具。第二,如果非要做推理的话,我们一般做线下的推理,就是预先把推理做好,把它能展开的数据全展开,也叫「知识补全」,就像简单的传递性的关系或者预先把它都展开,相当于存储空间换时间,这是一个比较常用的方法。我们现在不太建议线上服务时做实时推理,因为那个性能一般很难达到要求。
Q:本体构建的大致方法能简单介绍一下吗?
A:本体构建的方法从大的面来讲有两种,一种是传统基于专家的方法,就是请一般专家全手工构建,他们对每个词、每个实体、词之间的关系都开会讨论,最后决定应该这样、应该那样,这是专家驱动的方法。但这种方法已经不太可行,而且这种方法也会成为我们做知识图谱的瓶颈,因为我们期望知识图谱是一个敏捷构建的。
目前大部分是数据驱动的方法,就是我们通过数据挖掘去自动构建知识图谱,适当地基于人工的 review。我倾向于极端的方法,我推荐的方式是知识图谱的构建整个是全自动,但是也需要专家的参与,但是专家参与不是做 review、不是做构建,而是做评测。整个知识图谱的效果根据应用的效果说话,这个应用不能假设整个知识图谱是完全正确的、完整的的。我们可以通过快速迭代,不断的对知识图谱去做更新,然后根据自动化的测试或者根据人工的抽样检查和应用的效果去看知识图谱的质量。只要我们知识图谱的质量能够满足应用的需求就 OK。
Q:实体抽取有一个大致的最佳实践吗?
A:最佳实践是这样的,如果从工业界角度看的话,实体抽取肯定是多个方法的融合,基于词典、基于规则、基于统计学习方法、基于深度学习方法,没有一个方法就能搞定所有的问题。虽然词典挖掘这个东西没有技术含量,但是实践中基于词典的方法是非常有效的方法,特别是在垂直领域里面,像医疗这种领域,当然,在有些领域可能这个方法不靠谱,比如在音乐领域,音乐里面有歌名,任何一个词都可能是歌名。
但基于词典方法还有一个重要考虑,一定要考虑这个词典的这个词有没有歧义,或者一个词的先验概率。比如「我爱你」也是一首歌名,但是它是歌名的概率可能不是特别大,但「忘情水」是歌名的概率就很大,所以词典不是简单的词条列表,而是要带先验概率的信息。
Q:知识图谱还需要语义网的知识吗?构建 OWL 可还需要很强的领域知识?
A:我们刚才说到知识图谱的前身是语义网,所以如果想更加深刻理解知识图谱,还是要了解一下语义网的知识,特别像 RDF OWL 的规范是要了解一下的。
OWL 的这个本体语言还是有点偏复杂,目前基本上不太推荐知识图谱搞得那么复杂,基本对应到 RDF 那种形态就差不多了。我们希望知识图谱可以构建尽量大,但是它从逻辑上来讲尽量简单,不要用 OWL 里面复杂的东西。一点点语义可以走得很远,没必要把模型搞得太复杂,因为把模型搞得太复杂的一个最重要难点是当你把实体放进去时你很难判断这个实体属于哪个概念。
Q:心理学出身的研究者在 NLP 学术领域是否有竞争力?对于心理学研究者转向 NLP 学术圈有哪些建议?
A:这个问题挺有意思的。我们组里有一个主力骨干就是学心理学出身的,但他当时学的心理学是偏统计方面的心理学,也就是计量心理学这方面的,所以他相对有一定的统计基础。这时候由统计基础转向到 NLP,因为有数学基础,是比较容易一点的。另外一点,心理学比较有意义的是认知这一块,因为神经网络这些原理跟认知心理学有一定的关系,所以心理学知识对转到 NLP 挺有帮助的。
关于具体的建议,不管哪个专业转到 NLP,最重要的是学好数学和机器学习最基础的东西,这个基础打好了,转向 NLP 就比较简单了。
Q:基于知识的方法和统计类的方法需要共融互补,老师有没有典型的合作思路,充分利用基于知识规则方法的稳定可控的同时,又能利用统计从有监督的大数据自动抽取模式?是否可以讲讲两者一起 NLP 的经验?
A:现在人工智能主要是三大学派——知识图谱派、统计学习派、深度学习派,从工业界角度来看,在解决具体问题时各有所长,所以需要把这三者融合在一起,真实的线上系统不会只有一个方法。所以知识方法是一个很重要的方法,而且它跟深度学习是有比较好的互补性,特别是可以提供深度学习方法里面没有的可解释性这一块。
具体怎么融合,最简单的融合方法就是做模型Ensemble,把几个分类器组装在一起,这个可以看周志华老师那本「西瓜书」,因为周老师做模型的 Ensemble是最拿手的。
此外,把知识或规则都可以作为特征,从这个角度融合在一起。另外,深度学习里的解码器也可以把知识融合进来,所以这块的方法是很多的。