认识知识图谱:一张改变世界的知识地图
想象这样一个场景:放学后,你打开手机想找一部好看的电影。你在搜索框里输入“适合青少年看的励志电影”,几秒钟后,屏幕上出现了一长串电影列表——《奇迹男孩》《当幸福来敲门》《放牛班的春天》……每一部电影下面还贴心地标注了导演、主演、类型、上映年份,甚至还有“如果你喜欢这部电影,你可能也会喜欢……”的推荐。
你有没有想过,这几秒钟之内,你的手机和互联网到底做了什么?
答案就藏在一个叫做“知识图谱”的技术里。
什么是知识图谱?
要理解知识图谱,让我们先从一个你可能玩过的游戏开始——蜘蛛网。
当你观察一张蜘蛛网时,你会发现:中央是一个点,从这个点向四周延伸出很多条线,每条线的末端又连接着其他的点,而点和点之间又通过线条相互连接。一张复杂的蜘蛛网,可以容纳几十甚至上百个交叉点。
知识图谱的结构,与蜘蛛网非常相似。
在知识图谱中,每一个“小点”叫做实体(Entity),比如一部电影的名字、一位导演的名字、一位演员的名字、一部电影的类型标签。“线”叫做关系(Relation),它描述的是实体和实体之间的联系。比如,“《奇迹男孩》”是一个实体,“朱莉娅·罗伯茨”是一个实体,而“《奇迹男孩》的导演是斯蒂芬·卓博斯基”这句话描述的就是这两个实体之间的关系。
正是因为有了这些实体和关系,计算机不再只是简单地存储一串文字,而是能够“理解”这些文字背后的含义。就像你知道“《奇迹男孩》”是一部关于一个小男孩励志成长的电影,你也大概知道“励志”“成长”“亲情”这些标签都和这部电影有关。知识图谱做的事情,就是把这些你脑子里的“常识”,用一种计算机能够理解的方式表达出来。
让我们再看一个更具体的例子。
假设你的学校要制作一份“校园人物关系图”。在这张图上,你可以把校长、老师、同学、社团负责人等不同角色都画成“小圆圈”,然后用线条把他们的关系标出来——校长管理副校长,副校长管理年级主任,年级主任管理班主任,班主任负责管理学生……当你把所有这些信息画在一张图上时,你一眼就能看出整个学校的组织架构,也能很快找到从校长到某个普通学生之间的“最短路径”。
这就是知识图谱最直观的样子:一张由节点和连线组成的巨大网络,每个节点代表一个“东西”(可以是真实的人、物体、地点,也可以是抽象的概念),每条连线代表它们之间的关系。
知识图谱的“基因”:三元组
如果我们把知识图谱拆解到最基础的层面,会发现它其实是由无数个小小的“三元组”组成的。
什么是三元组?
想象这样一个句子:“北京是中国的首都。”
在这个句子中,“北京”是一个实体,“是……的首都”描述的是一种关系,“中国”是另一个实体。这就是最简单的一个三元组:
$$(北京,\ 首都,\ 中国)$$
或者用更专业的表达方式:
$$(主体,\ 谓词,\ 客体)$$
再比如:“爱因斯坦出生于德国。”
这里,“爱因斯坦”和“德国”是两个实体,“出生于”是它们之间的关系。这个句子可以表示为:
$$(爱因斯坦,\ 出生于,\ 德国)$$
再复杂一点:“牛顿在1687年发表了《自然哲学的数学原理》。”
这是一个更长的句子,但它其实可以分解成多个三元组:
- $(牛顿,\ 发表,\ 自然哲学的数学原理)$
- $(自然哲学的数学原理,\ 出版年份, 1687)$
- $(自然哲学的数学原理, 类型, 物理学著作)$
- $(牛顿,\ 国籍, 英国)$
你看,无数个这样的三元组组合在一起,就像一块块小小的积木,能够拼凑出无比庞大的知识网络。Google 搜索引擎背后的知识图谱,据说包含了数十亿个实体和数千亿个关系——这几乎相当于人类所有公开知识的一张大网。
从“关键词匹配”到“智能理解”
说到这里,你可能会问:知识图谱到底有什么用?为什么我们需要它?
要回答这个问题,让我们先回到没有知识图谱的时代。
假设你在搜索引擎里输入“苹果”,你会得到什么?
可能是:
- 苹果公司的最新 iPhone
- 水果苹果的营养价值
- 苹果公司 CEO 蒂姆·库克的新闻
- 苹果期货价格走势
- 一首叫《苹果》的歌曲
如果你真的只是想买水果,你需要在一堆不相关的结果里自己筛选。这就是传统搜索引擎的工作方式——它只是在你的关键词和网页内容之间做“匹配”,至于你到底想要什么,它并不“理解”。
现在,有了知识图谱,情况就不同了。
当你搜索“苹果”时,搜索引擎知道“苹果”至少有几个不同的含义:一种水果、一个科技公司、一个唱片公司、一个乐队……它可以根据你之前搜索过的内容、你所在的地区、当前的热点新闻等线索,猜测你真正想要的是哪一个“苹果”。
不仅如此,它还能回答更复杂的问题。比如:
- “苹果公司的创始人是谁?”→ 史蒂夫·乔布斯、史蒂夫·沃兹尼亚克、罗纳德·韦恩
- “乔布斯是什么时候去世的?”→ 2011年10月5日
- “乔布斯创办的另一家公司叫什么?”→ 皮克斯动画工作室(后来被迪士尼收购)
- “皮克斯制作的第一部电影是什么?”→ 《玩具总动员》(1995年)
你看,这些问题之间其实是有“联系”的——从一个问题的答案,可以引出下一个相关的问题。这就是知识图谱的力量:它让计算机不再只是机械地匹配关键词,而是能够像人一样进行“推理”,找到知识与知识之间的关联。
知识图谱改变了什么?
让我们用一个更生活化的例子来说明知识图谱带来的改变。
场景一:智能推荐
你有没有注意到,当你刷短视频或者听音乐软件时,它总能精准地推荐你可能喜欢的内容?抖音会根据你点赞、评论、分享过的视频,推荐更多同类内容;网易云音乐会根据你收藏的歌曲,推荐风格相似的其他歌曲或歌手。
这些推荐的背后,都有知识图谱在发挥作用。
音乐软件可能构建了一个音乐知识图谱:节点包括歌手、专辑、歌曲、风格标签、流派、时间段……关系则包括“某首歌的演唱者是某位歌手”“某首歌的风格是某种流派”“某位歌手受到另一位歌手的影响”……当你听了一首周杰伦的《晴天》之后,系统不仅知道这首歌,还知道周杰伦是谁、他属于什么风格、他和哪些歌手有相似性——于是它可以推荐林俊杰、陶喆、王力宏这些风格相近的歌手。
这就是为什么有时候你会惊讶:“它怎么知道我喜欢这个?”
场景二:智能问答
现在,很多手机和智能音箱都能回答你的问题。比如,你问 Siri:“谁是美国第一位总统?”它会直接告诉你“乔治·华盛顿”。
但更厉害的是,它可以回答一些需要“推理”的问题。比如:
你问:“特斯拉的 CEO 是什么时候出生的?”
系统需要做以下几步推理: 1. 首先知道特斯拉的 CEO 是埃隆·马斯克(通过知识图谱中的关系查询) 2. 然后查找埃隆·马斯克的出生日期 3. 最后把答案呈现给你
如果没有知识图谱,系统可能根本不知道“特斯拉的 CEO”指的是谁,更别说去查马斯克的出生日期了。
场景三:医疗诊断辅助
知识图谱在医疗领域也有重要应用。
想象一个场景:医生在诊断一个疑难病症时,需要参考大量的医学文献、病例记录、药物说明、检查报告……这些信息如果只是散乱地存储,医生需要花费大量时间去检索和比对。
但如果构建了医学知识图谱,情况就不一样了。
医学知识图谱可以包含:
- 疾病、症状、病因之间的关系
- 药物和疾病、药物和副作用之间的关系
- 检查项目和异常指标之间的关系
- 基因、蛋白质和疾病之间的关系
当医生输入患者的症状时,系统可以快速检索知识图谱,找出可能相关的疾病、推荐需要的检查、提示可能的并发症——就像一个永不疲倦的超级助手。
当然,最终的诊断仍然需要医生来做决定,但知识图谱可以帮助医生更快、更全面地考虑各种可能性,减少漏诊和误诊的风险。
场景四:教育学习
对于青少年读者来说,知识图谱还有一个特别有用的应用:辅助学习。
你有没有遇到过这样的情况:学习某个知识点时,发现它涉及很多其他前置概念,而这些前置概念你又不太懂,于是越查越多,最后完全迷失在信息的海洋里。
知识图谱可以帮助解决这个问题。
比如,当你学习“第二次世界大战”这个历史事件时,知识图谱可以帮你梳理出:
- 参战国之间的关系(同盟国、轴心国)
- 重要战役之间的关系(时间线、地理位置、参战双方)
- 历史人物之间的关系(各国领导人、军事指挥官、外交家)
- 战争起因和结果之间的关系(经济危机、法西斯主义兴起、战后世界格局变化)
通过这张“知识地图”,你可以清晰地看到各个知识点之间的联系,知道自己已经掌握了什么、还需要补充什么,学习效率大大提高。
知识图谱是如何构建的?
现在你可能会好奇:这么庞大的知识网络,是怎么建立起来的呢?
构建知识图谱主要有两种方式:手动构建和自动抽取。
手动构建
手动构建就像编纂一本词典或百科全书。专业人员阅读大量的文献资料,然后人工提取其中的实体和关系,写成一条条知识条目。
这种方式的好处是质量高、准确性好。但缺点也很明显:效率低、成本高,不可能大规模应用。
比如,维基百科的编辑者们花费了数十年的心血,才建立了包含数千万词条的庞大数据库。但对于日新月异的互联网信息来说,这种速度还是太慢了。
自动抽取
自动抽取则是让计算机自动从海量的文本中“读”出知识。
现代的自然语言处理技术可以从网页、新闻、论文、社交媒体等来源中,自动识别实体、提取关系、构建三元组。
举个例子,当计算机读到这样一段新闻:“2023年3月,OpenAI 发布了最新的人工智能模型 GPT-4,这款模型在多项专业考试中表现优异。”
它可以自动提取出以下三元组:
- $(OpenAI,\ 发布,\ GPT-4)$
- $(GPT-4,\ 发布时间, 2023年3月)$
- $(GPT-4,\ 类型, 人工智能模型)$
- $(GPT-4,\ 开发者, OpenAI)$
当然,自动抽取也有挑战。人类的语言是复杂的,同一个意思可以有很多种表达方式,机器需要学习理解这些“语言变体”。比如,“特斯拉公司的 CEO 是马斯克”“马斯克是特斯拉的 CEO”“特斯拉由埃隆·马斯克领导”——这三句话的意思几乎一样,但表达方式完全不同。好的算法需要能够把这些不同的表达方式都识别出来,提取出相同的知识。
知识的验证与融合
无论采用哪种构建方式,知识图谱都需要一个重要的步骤:验证和融合。
不同来源的知识可能会有冲突或重复。比如,一个数据库说“珠穆朗玛峰的高度是8848米”,另一个数据库说“8844米”——这其实是因为测量标准不同(是否包含雪盖)。知识图谱需要能够处理这类冲突,或者至少让用户知道数据来源和测量标准的差异。
另外,同一个实体可能有多个名称。Python 的创始人 Guido van Rossum,有时候被叫做“吉多·范·罗苏姆”,有时候被叫做“吉多”。知识图谱需要知道这些名字指向的是同一个人,并把它们“融合”在一起。
知识图谱的“家族谱系”
知识图谱并不是凭空出现的,它的背后有一段长长的技术发展史。
如果把知识图谱比作一棵大树,那么它的根可以追溯到人工智能的早期研究。
1956年,在美国达特茅斯学院举行的一次会议上,“人工智能”这个术语首次被正式提出。从那时起,科学家们就梦想着创造一种能够像人类一样思考和推理的机器。
要实现这个梦想,首先需要解决一个问题:机器如何表示知识?
语义网络:最早的尝试
20世纪60年代,心理学家 Allan Collins 提出了一种叫做语义网络(Semantic Network)的知识表示方法。这种方法用节点和连线来表达概念和它们之间的关系,有点像我们今天看到的知识图谱的雏形。
比如,要表达“鸟会飞”这个知识,语义网络会这样画:
- 节点“鸟”连接到节点“会飞”,关系是“具有能力”
这种方法比纯文字更容易被计算机处理,但也有局限性——它难以精确表达一些复杂的关系和逻辑推理。
本体论:给知识定规矩
20世纪80年代到90年代,计算机科学家们发展出了本体论(Ontology)这一概念。本体论就像是给某个领域制定的一份“规则手册”:这个领域有哪些重要的概念?这些概念之间有什么关系?哪些事情是合理的、哪些是不合理的?
比如,如果你要构建一个“动物世界”的本体,你需要规定:
- 动物可以分为哺乳动物、鸟类、爬行动物……
- 哺乳动物是动物的一种(分类关系)
- 猎豹是哺乳动物的一种(实例关系)
- 哺乳动物会哺乳(属性关系)
- 捕食者和猎物之间是对抗关系……
有了这些规则,计算机就可以进行一些基本的推理:如果告诉你“猎豹是哺乳动物”,又告诉你“哺乳动物是恒温动物”,计算机就可以推理出“猎豹是恒温动物”。
知识图谱:集大成者
2012年,Google 正式发布了“知识图谱”(Knowledge Graph)产品,这标志着知识图谱从学术研究走向了大众应用。
Google 的知识图谱整合了多种来源的知识——包括维基百科、Freebase、DBpedia 等公开数据库,以及 Google 自己收集和整理的数据。当你在 Google 搜索框输入关键词时,知识图谱会在搜索结果的右侧显示一个信息卡片,列出与这个关键词相关的实体、关系和图片。
这个看似简单的功能,背后是一个拥有数十亿实体和数千亿关系的大型知识网络。
Google 并不是唯一进入这个领域的公司。微软的 Satori、Facebook 的实体图谱、亚马逊的商品知识图谱、阿里巴巴的商品知识图谱、腾讯的知识图谱……几乎所有大型互联网公司都在构建自己的知识图谱,服务于搜索、推荐、问答、智能客服等各种应用。
知识图谱的核心组成
让我们更系统地了解一下知识图谱的内部结构。
模式层与数据层
一个完整的知识图谱通常分为两层:模式层(Schema)和数据层(Data)。
模式层就像是知识图谱的“骨架”和“规则手册”。它定义了在这个图谱中存在哪些类型的实体(比如“人物”“地点”“组织”“事件”),以及这些实体之间可能存在哪些类型的关系(比如“出生地”“创始人”“发生在”)。
模式层的设计非常重要,好的模式层可以让知识图谱结构清晰、推理可靠、扩展方便。
数据层则是实际存储的一个个具体知识三元组。比如:
- $(张三,\ 出生地,\ 北京)$
- $(北京,\ 位于,\ 中国)$
- $(张三,\ 职业,\ 程序员)$
数据层是对模式层的“填充”,模式层是对数据层的“规范”。
本体与实例
与模式层/数据层相关的另一个概念是本体(Ontology)和实例(Instance)。
本体定义的是抽象的概念和规则。比如,“人”是一个本体概念,它定义了“人”这种实体应该有哪些属性(姓名、年龄、性别……)和关系(父母、子女、工作单位……)。
实例则是本体的具体化。“张三”是一个实例,它是“人”这个本体的具体个体。张三有自己的姓名、年龄、性别,有自己的父母、子女和工作单位。
在很多知识图谱系统中,本体和实例是分开存储的,这样可以提高效率和灵活性。
知识存储:图数据库
传统的数据库通常采用“表”的形式存储数据——每一行是一条记录,每一列是一个字段。这种存储方式叫做关系型数据库。
但知识图谱中的数据是图的结构——大量节点和边,用关系型数据库来存储会很低效。想象一下,你要查询“和张三有关系的所有人”,如果用表格存储,你可能需要做很多表的连接操作,效率很低。
于是,专门用于存储图数据的图数据库(Graph Database)应运而生。常见的图数据库包括 Neo4j、JanusGraph、ArangoDB 等。
在图数据库中,每个实体是一个“节点”,每条关系是一条“边”,可以直接通过“边”从一个节点跳转到另一个节点,查询效率大大提高。
知识图谱的“邻居”:相关技术
知识图谱并不是孤立存在的,它和很多相关技术有着密切的联系。
知识图谱与搜索引擎
搜索引擎是知识图谱最直接的应用场景之一。Google 在2012年推出知识图谱后,搜索体验有了显著提升。
传统的搜索是“关键词匹配”:用户输入几个词,系统找出包含这些词的网页。
有了知识图谱,搜索变成了“智能问答”:用户可以用完整的句子提问,系统理解问题后,从知识图谱中提取答案,甚至可以回答一些网页中没有直接提到的问题。
知识图谱与自然语言处理
自然语言处理(Natural Language Processing,NLP)是让计算机理解和生成人类语言的技术。知识图谱的构建和应用都离不开 NLP。
在构建阶段,NLP 用于从文本中自动抽取实体和关系——这就是前面提到的“信息抽取”技术。
在应用阶段,NLP 用于理解用户的自然语言查询,并生成自然语言的答案。这就是“知识问答”技术。
知识图谱与机器学习
机器学习(Machine Learning)是让计算机从数据中自动学习规律的技术。它和知识图谱的关系可以用“互补”来形容。
机器学习擅长处理模糊的、不确定的、统计性的问题:比如识别一张图片里是猫还是狗,预测明天的天气,个性化推荐商品……
知识图谱擅长处理确定的、结构化的、逻辑性的问题:比如查询“某公司的 CEO 是谁”,推理“三角形内角和是180度”……
现代的人工智能系统往往同时结合这两种技术:机器学习提供“直觉”和“预测”能力,知识图谱提供“知识”和“推理”能力。这种结合让 AI 系统更加全面和可靠。
生活中的知识图谱
说了这么多,你可能会觉得知识图谱还是有点抽象。没关系,让我们回到日常生活的场景,看看知识图谱是如何悄悄影响你的生活的。
你的手机助手
当你对着 Siri 说“嘿 Siri,明天早上8点提醒我去学校”时,它需要做以下事情: 1. 理解你说的话:提取出“明天早上8点”这个时间,“去学校”这个事件 2. 将事件关联到你的日程:知道你是学生,学校可能是某所具体的学校 3. 设定提醒
这背后就涉及到一个简单的个人知识图谱:它知道你的身份、你的学校、你的日程安排……
你的音乐 App
当你刷抖音时,算法会根据你的兴趣推荐视频。推荐系统的背后,往往有用户兴趣图谱和内容知识图谱的支撑:
- 用户兴趣图谱记录了你的偏好:喜欢什么类型的音乐、什么风格的视频、什么主题的内容
- 内容知识图谱则理解内容的属性:这段音乐是什么风格、这段视频讲了什么主题、这些内容之间有什么关联
你的网购体验
当你在淘宝上搜索“适合学生用的平板电脑”时,系统会: 1. 理解你的需求:学生用、预算可能有限、需要学习功能 2. 匹配商品:查找属性包含“平板电脑”的商品,筛选价格适中、评价好的 3. 推荐关联商品:你可能还需要保护套、触控笔、耳机……
电商平台的商品知识图谱可能包含数亿个商品实体和数十亿的关系,支撑着从搜索到推荐再到客服的各个环节。
你的社交网络
在微信或 QQ 上,你的好友列表、群聊关系、互动记录……其实也可以看作是一个小型的社交知识图谱。
系统通过分析这个图谱,可以:
- 推荐你可能认识的人(你们有共同好友)
- 识别你最亲密的好友