(好像说的不只是入门了。算是个成长打怪小提纲吧)
任何一个学科,重要的不是静态的知识本身,而是建立知其然(Framework),知其所以然(Rationale),最后到知未然(Insights)。最重要的便是产生insights,因拥有洞察而知关键所在,所以能预测未来的走向,不人云亦云。
知识图谱作为一门学问,绝不是用个图数据库写几条查询,或者用规则写一个表格的提取,就可以称为成功的运用的。和所有的学科一样,都需要长期的艰苦的努力,在充分了解前人成果的基础上,才有可能做出一点点成绩。
知识图谱作为人工智能(AI)的一个分支,和AI的其他分支一样,它的成功运用,都是需要知道它的所长,更需要知道它的所短的。特别是AI各个学派林立,经验主义(机器学习)、连接主义(神经网络)、理性主义(知识工程)、行为主义(机器人)各个方法的优劣,倘若不能有纵览的理解,也难以做正确的技术选型,往往盲目相信或者排斥一种技术。AI是一个极端需要广阔视野的学科。
知识图谱涉及知识提取、表达、存储、检索一系列技术,即使想有小成,也需要几年的功夫探索。如下所列,应该是每个知识图谱从业者都应该了解的一些基本功:
知道Web的发展史,了解为什么互联和开放是知识结构形成最关键的一件事。(我把这个列第一条,是我的偏见——但我认为这是最重要的一个insights)
知道RDF,OWL,SPARQL这些W3C技术堆栈,知道它们的长处和局限。会使用RDF数据库和推理机。
了解一点描述逻辑基础,知道描述逻辑和一阶逻辑的关系。知道模型论,不然完全没法理解RDF和OWL。
了解图灵机和基本的算法复杂性。知道什么是决策问题、可判定性、完备性和一致性、P、NP、NExpTime。
最好再知道一点逻辑程序(Logic Programming),涉猎一点答集程序(Answer Set Programming),知道LP和ASP的一些小工具。这些东西是规则引擎的核心。如果不满足于正则表达式和if-then-else,最好学一点这些。
哦,当然要精通正则表达式。熟悉regex的各种工具。
从正则文法到自动机。不理解自动机很多高效的模式提取算法都理解不了。
熟悉常见的知识库,不必事事重新造轮子,如Freebase, Wikidata, Yago, DBPedia。
熟悉结构化数据建模的基本方法,如ER,面向对象,UML,脑图。
学会使用一些本体编辑器,如Protege。(Palantir就是个价值120亿美元的本体编辑器)
熟悉任何一种关系数据库。会使用存储过程写递归查询。明白什么叫物化视图、传递闭包、推理闭包。
熟悉任何一种图数据库。明白图的局部索引和关系的全局索引的理论和实践性能差异。
熟悉词法分析的基本工具,如分词、词性标注
熟悉句法分析的基本工具,如成分分析、依存文法分析、深层文法分析
熟悉TFIDF、主题模型和分布式表示的基本概念和工具。知道怎么计算两个词的相似度、词和句子的关联度。
知道怎么做命名实体识别。知道一些常用的词表。知道怎么用规则做关系提取。
为了上述的深化,要掌握一些机器学习的基本概念,识别、分类、聚类、预测、回归。掌握一些机器学习工具包的使用。
谨慎地使用一些深度学习方法,最好在是了解了神经网络的局限之后,先玩玩BP。主要是用用LSTM。
了解前人已经建好的各种Lexical数据库,如Wordnet, framenet, BabelNet, PropBank。熟悉一些常用的Corpus。
知道信息检索的基本原理。知道各种结构的索引的代价。
掌握Lucene或者Solr/Elasticsearch的使用。
学会混合使用多种数据库,把结构化数据和非结构化数据放在一起使用。体会数据建模和查询的成本。
学会一些概念原型工具,如Axure和Semantic Mediawiki。快速做MVP。
以上是挂一漏万的一些罗列。知识图谱是交叉性的、实践性的学问,当然不必先蒙头学几年才能来做事。How to get to Carnegie Hall? Practice, Practice, Practice.
所以Just practice。
最后推销一下我在中国中文信息学会《前沿技术讲习班》第三期做的讲座:精益知识图谱方法论 – 文因互联
发表回复