3分钟告诉你 计算机是如何像人类一样阅读的
不知道最近大家有没有注意,在使用Baidu、Google等搜索引擎的时候,很多简单的问题搜索引擎会直接告诉你答案,比如输入“西游记的作者是谁”就能直接得到“吴承恩”。并且,即便你更换提问方式,例如换成更加口语化的“谁写的西游记”也能获得正确答案。显然,计算机能在一定程度上读懂这个问题,并且还能根据自己掌握的信息来反馈出正确的答案。那么计算机是如何做到的呢?
语言是人类智慧的结晶,如何教会计算机读懂人类语言是充满挑战的任务,计算机科学家给这项技术起了一个名字叫“自然语言处理”。刚刚我们在上文中提到的其实就是这个技术。
为了能给用户返回精确搜索结果,需要在搜索引擎的服务器中提前存储用户检索的问题的答案,例如“西游记,作者,吴承恩”这样的三元组数据,在这里我们简称其为“知识”。但是在现实世界中,不同的问题不尽其数,需要存储的知识自然也成千上万,更让人抓狂的是每天还在产生新知识,用人工手动输入知识的方式去做将是一个不可能完成的任务。
所以,我们需要一种自动化技术,让计算机可以自动完成知识的提取,再把它存储到数据库中,以便快速准确的返回搜索结果,这种自动化的技术,就是通过自然语言处理技术来实现的。
上图的Demo中,展示了自然语言技术抽取知识的示例。
随便输入一段和问题相关的文本,计算机就能自动识别出里面涉及到的知识并提取出来,即(主体,关系,客体)。
在图中我们可以看到,“明朝作家吴承恩……心血”这句话虽然没有直接回答“谁写了西游记”但是却隐含了正确答案“吴承恩”。也就是说,计算机只要正确识别出“西游记”、“作者”、“吴承恩”这三个要素,并理解他们之间的关系就能给出答案。以下为这个过程的详细解读:
(1)首先需要做的是把文本变成神经网络能够处理的矩阵,通俗点来说就是把人类的语言翻译成计算机可以读懂的语言。
通过将文本输入Bert(一个文字语义表示模型,可以把文本变成包含上下文语义的矩阵),计算机就可以将把“明朝作家吴承恩……心血”这句话变成一个矩阵。矩阵中的每个数都是一个32位的浮点数,每一行代表句子中的某个字,形式如下图所示:
注:(1)此矩阵只是为了展示原理而随机生成的,并不代表程序中的真实矩阵。(2)bert原理概念超出文本的内容范围,请感兴趣的读者自行了解。
上面的话共有23个字,每一行数字代表一个字,所以此矩阵有23行, 第一行[0.21113167, 0.82103755, 0.50128206, 0.73248588, 0.98786456]就是汉字“明”的数字化表示,以此类推。
并且矩阵中的每个向量,都包含语义信息,这些语义信息都是通过bert训练得到的。语义相近的字,背后的向量也比较接近。例如表示颜色的字如红、黄、蓝等,它们通过bert后得到的三个向量之间的余弦距离就会很近,它们与苹果、梨、桃这种表示水果字背后的向量的余弦距离会很远。注:在程序中,矩阵真实列数为768,这里为了显示方便,只写了5列。
(2)通过第一步,计算机获得每个汉字的数字化表示以及向量关系(包含部分词性、语义等)。但是一句话包含很多个字,到底哪个字才是问题的正确答案呢,这里就需要借助神经网络的计算能力来提取出文本中的主体,客体以及它们的关系。具体操作方式为:
上面的步骤就是自然语言处理进行知识抽取的简单流程。通过这样的方式,计算机就可以凭借强大的计算能力,快速获取海量文本信息中的问题答案。当然,自然语言处理不只是能进行知识抽取,所有涉及理解语义含义的场景,如:文本分类,自动摘要,文档式自动问答等等都可以使用该技术,以后有机会,偶数科技会继续为大家介绍相关应用,谢谢大家。
关于偶数
偶数科技是一家总部位于北京的云数据仓和AI产品提供商,致力为全球各行业客户提供大数据和AI产品及行业解决方案。我们的愿景和使命是“用科技让人类只为兴趣而工作”。目前偶数科技已经获得来自红杉中国、红点中国、金山云以及产业科技巨头的融资。
公司核心产品“偶数数据云Oushu Data Cloud”由“新一代云原生数据仓库OushuDB”、“自动化机器学习平台LittleBoy”以及“数据管理平台Lava ”组成。产品已在金融、互联网、电信、政府等行业数百家头部企业得到广泛应用。
偶数科技同时是微软加速器和腾讯加速器成员企业,并入选美国著名商业杂志《快公司》 “中国最佳创新公司 50”榜单。