知识图谱的本质是语义网络。
语义网络:包含实体、概念以及实体与概念之间各种各样的语义关系。
实体:“能够独立存在的,作为一切属性的基础和万物本原的东西”。实体是属性赖以存在的基础,必须是自在的,也就是独立的、不依附于其他东西而存在的。
概念:又称之为类、类别。
语义关联:实体之间、概念之间、实体与概念之间。
实体之间:
概念之间:子类关系(subclassOf)
实体与概念之间:实例关系(instanceOf)
DKG与GKG的关系和区别:领域应用所涉及的知识体系越是封闭,越容易成功。
为何需要符号化表示的知识图谱?
知识表示其实一直以来都有两种基本的方式:符号化表示与数值型表示。
分布式表示是将符号知识集成到深度学习框架中的一种基本方式。符号化表示是一种显性的表示,而分布式表示是一种隐性的表示。符号化表示易理解、可解释,而分布式表示是难解释、难理解的。符号化表示的另一优点在于推理能力。
领域知识图谱系统的生命周期包含四个重要环节:知识表示、知识获取、知识管理与知识应用。
知识表示只提供机器认知的基本骨架,还要通过知识获取环节来充实大量知识实例。
在整个生命周期中,最重要的是明确知识的应用场景,也就是回答清楚一个问题:利用领域知识解决怎样的应用问题。再根据应用来反推到底需要怎样的知识表示,明确知识边界。
DKG中知识如何表示?
常用三元组表示领域知识图谱。知识图谱只能表达一些简单的关联事实,但很多领域应用的需求已经远远超出了三元组所能表达的简单关联事实,实际应用日益对于利用更加多元的知识表示丰富和增强知识图谱的语义表达能力提出了需求。
从时空维度拓展知识表示对很多特定领域具有较强的现实意义。
知识图谱时空维度拓展在物理实现上可以通过定义四元组或者五元组加以实现。跨媒体表示可以通过定义相关的属性加以实现
领域知识图谱的应用落脚点
搜索、推荐、问答、解释、决策。
命名实体识别 NER
传统方式:
构造实体字典,遍历句子进行正则匹配,常用的算法包括最大向前匹配、最大向后匹配,双向最大匹配。
最大向前匹配
1.从左向右取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。 2.查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
最大向后匹配
1.从右向左取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。 2.查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
双向最大匹配
1.将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。
2.启发式规则:
2.1.如果正反向分词结果词数不同,则取分词数量较少的那个。 2.2.如果分词结果词数相同 a.分词结果相同,就说明没有歧义,可返回任意一个。 b.分词结果不同,返回其中单字较少的那个。
知识图谱的一个常用场景是问答系统。
传统方式:
问答句子实体识别
考虑到效率,经常使用AC算法(Aho-Corasick),即一种字符串搜索算法,通过与已有实体字典进行实体匹配,进而得到句子包含的实体以及实体所属类别。
问答句子类型判断
结合实体类别及句子类型规则,判断句子例如是“寻找推荐”,“寻找原因”..等类型
查询sql
根据问答句子类型找到对应sql,查询图数据库
美化查询结果
根据问答句子类型对图数据库返回的结果进行回答句子拼接,并输出结果。
可以看到,在知识图谱及基于图谱的问答场景中,传统技术手段以规则为主,例如使用正则匹配技术完成NER任务、使用搜索匹配 规则手段完成句子实体识别、句子类型解析、查询结果基于规则美化,进而完成整个问答过程。
对于图数据库实体更新、关系更新这些维护手段暂时还未曾了解使用何种技术手段。
基于机器学习/深度学习
思考:
目前还不太了解基于AI的知识图谱构建技术,不过在学习过程中,本人发现:
在NER的分类任务,即判断若干实体属于哪些类时,可以考虑引入词向量,通过计算相似度或者构造基于机器学习的分类器等手段完成。
在对问答系统中查询句子类型解析时,也可以采用lstm、cnn等构造分类模型进行划分。
在构造实体间关系时,也可考虑使用分类器完成。但关于这一点理解还是不够,比如需不需要考虑到上下文信息?在不同的语义场景下,A与B的关系可能并非保持一致,如果使用上下文信息,该用何种算法?
此外,最重要的一点是NER任务中实体如何寻找?基于规则可以进行匹配找出,那基于机器学习技术该如何找出?
另外很多开源KG项目的初始实体库往往都是通过爬虫从相关领域WIKI网站上爬取得到,如果一个领域没有这样的wiki网站供爬取,又该如何获得?用机器学习技术能否解决?