不知道最近大家有没有注意,在使用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)通过第一步,计算机获得每个汉字的数字化表示以及向量关系(包含部分词性、语义等)。但是一句话包含很多个字,到底哪个字才是问题的正确答案呢,这里就需要借助神经网络的计算能力来提取出文本中的主体,客体以及它们的关系。具体操作方式为:


(非数据工程师可略过该部分)

把bert生成的矩阵传入训练好的神经网络后会输出4个矩阵:s1,s2,o1,o2,其中s1和s2是行数为23列数为1的矩阵。o1,o2是行数为23列数为n的矩阵,n代表主客体之间的关系数量,需要根据实际业务数据来定义,而23代表原始语句有23个字。对这4个矩阵进行sigmoid运算,如果此神经网络已经训练完毕,s1与s2会有大概如下形式:

S1=[[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]T],第12位为数字1,对应原始语句中第12个字“西”。

S2=[[0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]T]第14为为数字1,对应原始语句第14个字“记”

可以把s1,s2中数字1的位置分别看作句中主体的首尾位置,这样就标注出了原始语句中的主体“西游记”。矩阵o1和o2是识别客体以及对应关系的,和s1s2的识别过程相似,这里就不详细介绍了。


上面的步骤就是自然语言处理进行知识抽取的简单流程。通过这样的方式,计算机就可以凭借强大的计算能力,快速获取海量文本信息中的问题答案。当然,自然语言处理不只是能进行知识抽取,所有涉及理解语义含义的场景,如:文本分类,自动摘要,文档式自动问答等等都可以使用该技术,以后有机会,偶数科技会继续为大家介绍相关应用,谢谢大家。


关于偶数


偶数科技是一家总部位于北京的云数据仓和AI产品提供商,致力为全球各行业客户提供大数据和AI产品及行业解决方案。我们的愿景和使命是“用科技让人类只为兴趣而工作”。目前偶数科技已经获得来自红杉中国、红点中国、金山云以及产业科技巨头的融资。

公司核心产品“偶数数据云Oushu Data Cloud”由“新一代云原生数据仓库OushuDB”、“自动化机器学习平台LittleBoy”以及“数据管理平台Lava ”组成。产品已在金融、互联网、电信、政府等行业数百家头部企业得到广泛应用。

偶数科技同时是微软加速器和腾讯加速器成员企业,并入选美国著名商业杂志《快公司》 “中国最佳创新公司 50”榜单。