(本人在真格基金举办的一次自然语言处理主题聚会上的演讲稿)
自我介绍+开场白
首先,非常感谢为哥和各位负责组织的朋友能给我这样一个与大家分享的机会。
在开始前,我必须要解释一下,我并不像在坐的其他几位大牛有着深厚的NLP(自然语言处理)的经验。我和很多人一样都是在这次深度学习的热潮下加入机器学习这个大军的。在2年多前,在和朋友做一个交易平台的时候偶然接触到了用于分析股票热点的Sentiment Analysis (情感分析) 的这个技术。尽管最后并没有能作出真正有意义的产品,但是从那以后我便开始着迷于自然语言处理,从头开始一点一点学习各种自然语言处理的相关的知识,例如nlp features, word embedding, rnn, cnn, attention models, machine translation, goal oriented dialogue 等等。一路走来,陆陆续续做了一些项目,非常高兴还能继续在这个前沿领域做一些有意思的项目。
今天,我希望能和大家分享一下我最近在“Questions Answering" (机器问答) 这个方向的一些研究和想法。
背景故事
先来讲一个我最近一次找律师咨询的故事。
前一段时间,我朋友告诉我,我在2015年从国内汇过来一笔钱需要申报,也就是要在去年保税的时候需要提交一个3520的报表。于是我赶紧上网搜这个报表的填写指南。花了很长时间把这个长长的指南读下来,我才确定我确实需要报这个表,并且最高罚金可能达到涉及金额的35%。但是,在补交表格时如何申请赦免这个问题上,这个指南仅仅说需要提交一个"Reasonable Cause" (合理解释) 的说明文件。我这个初犯当然对于这个"Reasonable Cause"完全没有概念。我当时就蒙了,心想着说这难道就是传说的律师的金饭碗?没办法,只能花500美元雇了个有经验的税法律师咨询了一下我的情况到底该如何写这个"Reasonable Cause",破财消灾。
好在我通过这个事获得了一些关于"Question Answering" (机器问答)的第一手材料,心里一直琢磨着如何才能利用自然语言处理的技术自动化这个过程。我在这件事上花了若干小时的查找时间和500块一小时的咨询费。如果能把自动完成这个服务,边际收益可不小,可以是一个好买卖。毕竟这件事里面的这个表的填写指南和与这个表相关的法律案件,大众都是可以获得的。
机器问答的研究现状
我们先来看看,目前在“Question Answering” (机器问答)这个领域的两个大的研究方向。
阅读理解式的问答
相信大家上学的时候都做过阅读理解。先读一篇文章,然后回答一个问题。目前的技术对于还不能很好的自己造句回答问题,但是可以比较好的引用这个文章里的某一段话来回答问题。例如谷歌的WebAnswers,相信大家都用过。当你在搜索框里面输入一个问题时,如果搜索引擎觉得这个问题可以直接用一段文字作答,就会直接渲染一个卡片,引用一个网页中的一段文字来回答这个问题。当然这个过程中,搜索引擎借用了一些网页内容以外的信息,例如这个网页的排名,类似问题的点击记录等等。
更纯粹一点例子是去年9月斯坦福大学发布的一个用于研究机器问答的数据集,叫做SQuAD。数据的形式是,一段文字 + 一个问题 + 一个答案,这里的答案必须是给定文字里的一段话。因为这个数据集比较新,排名榜上面的竞争还很激烈,有兴趣的同学可以去试试挑战一下。
对话式的问答
另外一个方向是基于对话的问答。Intent Based Dialogue (目的性对话) 系统现在被广泛应用于各大类型的语音交互接口,例如苹果的siri, 谷歌的api.ai 和 Google Assistant, 亚马逊的 Lex 和微软的LUIS等等。这类系统有一个共性,都需要外部给定Intent (目的) 和 Slot (条件) 来进行对话交互。
举个例子,查询机票这个问题对于一个Dialogue(对话)系统来说就可以是一个Intent(目的)。这个Intent(目的)所需要的slot (条件) 就是:航线,时间和人数。有了这些信息,一个训练好的Dialogue (对话)系统就用来判断用户说的话是否想“查询机票”,并且自动通过对话的方式询问这个问题需要的条件,也就是航线,时间和人数,并最后回答这个问题。
“律师咨询”中的需求
我们再回头看看我这的不幸事件的过程中我的需求有哪些:
- 我需要上网搜这个表格的填表指南, 然后找到并读完相关部分,并确定我到底是否需要报这个表格和罚金的计算方法
- 这个过程中,有一个“Reasonable Cause”(合理原因)的这个模糊概念。我需要律师根据他们所知道的相关案例的经验来解读,并提供概率性的建议。
解决方案
通过前面提到的两个技术,我们似乎能部分地解决第一个需求。
首先,用阅读理解的技术,我可以省去读文章,查找到具体解释是否需要报这个表和描述如何计算罚金的段落。虽然说我还是需要读这两个段落,但是这还是可以省去我30分钟到1小时的时间阅读查找的时间。
其次,如果这个填写指南的信息被整理成Intent(目的)和Slot(条件)的形式输入给一个训练好的Dialogue System(对话系统),理论上我就不需要再做任何查找。我应该可以通过和这个机器对话了解到我是否需要报这个表,以及可能的罚金是多少。
可是这两个技术并没有有效的连接起来。一个可以帮我们找到相关章节,可另外一个则需要依赖于一个外部系统来解读这个段落把它翻译成Intent(目的)和Slot(条件)。目前这个步骤是由有经验的人人工完成的。
至于第二个需求,本质上是就一个Feature Engineering (特征工程)的过程,可以被理解为以下几个步骤:
- 本质上是就一个Reasonable Cause(合理原因)这个模糊概念建模
- 找到与这个模糊概念相关的各种因素
- 训练一个这个模型,然后来反相寻找哪些因素重要。
挑战
这个解决方法目前需要的突破点在于没有办法自动化这整个过程,也就意味着不能很有效把这个解决方案规模化。具体来说,首先我们需要从填表指南中抽取出Reasonable Cause(合理解释)这个模糊概念,然后从以前的相关案件中找到所有起作用的因素。这个过程中涉及到大量的文本理解处理,目前来看需要有经验的人手动处理。
从本质上看,我觉得这整个过程涉及的最大的挑战就是如何把自然语言的信息结构化并关联起来。如果能做到这点,我们就可以连接起来阅读理解的技术和对话系统去回答“确定性”的问题。然后把相关案例的信息总结归纳起来,来回答非确定性的问题,从而完成这个闭环。
这就是我今天带来的问题,非常期待能抛砖引玉,激起大家的一些讨论。
网友评论