NLP 实战 | 标签技能树和知识图谱
Posted 幻灰龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLP 实战 | 标签技能树和知识图谱相关的知识,希望对你有一定的参考价值。
我们都知道数据有两类:“结构化数据”和“非结构化数据”。如果有“结构化数据”,我们只要对结构化数据做增删查改就可以,进一步需要解决伸缩性的问题。但是更多的数据是非结构化数据,所谓非结构化数据并不是说数据内部毫无结构,而是数据的结构并没有被使用者定义、抽取、索引和查询。
从这个角度来说,如果数据是结构化的,数据库能解决的,就不必要再使用其他更复杂的做法。但是如果数据没有被很好的结构化,数据的有价值的信息并不能很好的地被索引和查询,用来支撑产品的进一步改进、创新进而创造商业价值。那么,我们就应该对数据的结构进行定义、抽取、索引并提供接口。
数据独特的结构可以建立并支撑起一个领域的独有的产品和商业。 例子:地理数据是一种独特的关于位置和拓扑的数据结构,支撑了诸如Google Maps 这样的产品,以及打车相关的产品。关于 Google Maps 产品的构建过程, 余晟 在他的公众号“ 余晟以为”上写过一些系列,可以阅读《Google Maps 的故事》,从其创建过程中还是能获得一些启发。
回过头来,文本数据是一种半结构化数据,有标题,与段落,有正文,正文里有不同类型的内容。搜索和推荐是挖掘文本内容的两个出口。搜索是用户主动使用关键字文本查询,对用户来说是一种主动明确的行为;推荐是平台根据数据(用户创作的文本和用户的行为画像)“猜”用户可能需要什么,对用户来说是一种被动模糊的行为。
所有的数据都一致的看待,无论是搜索还是推荐,都需要在所有的数据上处理,单次数据处理的空间比较大。如果对数据做分类,在搜索和推荐的时候,可以对数据空间做裁剪,裁剪到一个数据的子集里搜索和推荐,期望这样做之后,可以获得搜索上更好的性能,更精确的结果;获得推荐上更好的个性化猜测结果。
对数据的分类,也会使得对数据的索引更精细。从知识的角度来说,能在分类的基础上构建知识图谱,本质上也是对数据的结构信息提取后建立索引的过程。
对文本数据的结构化,第一个维度是“多标签分类”。 首先,建立统一标签体系(参考:CSDN 统一标签设计 征求反馈 ),逐步推荐所有数据标签的统一(参考:CSDN 统一标签开放仓库),建立渐进统一的版本。其次,针对统一标签训练文本标签多分类器,提供智能标签建议服务,并在不同业务上使用,在数据的入口处对数据进行初步的标签结构化。
为什么要统一标签? 因为不同系统产生数据的标签如果不是一个系统,那么A系统的数据在标签系统 S1下,B系统的数据在标签系统S2下。S1和S2之间的数据不在一个空间下,从理论上来说就难以根据标签来做合适的匹配。所以一致的标签系统,和一致的机器识别模型,至少在基础面上让文本数据的标签在一个统一的空间下,那么这些数据之间的匹配才有合理的基础。在这个基础上,需要持续解决的是标签系统的完备性和标签识别模型的精确度。
简单来说,希望统一标签建立起文本数据的笛卡尔坐标轴。文本数据在这些坐标构成的空间中,能有合适的嵌入表示。原则定下来,实现这个目标需要不断付出努力。
对文本数据的结构化,第2个纬度是“技能树”。 对知识进行结构化的一个核心做法就是建立树,例如生物学科上有门纲目科属种,维基百科有知识的层次结构,书籍有目录结构等。使用树来做数据的结构化虽然不是彻底的,毕竟数据库的发展表明关系型代数比树更彻底和成熟。但是那是对已经结构化的数据而言的。对于半结构化数据,非结构化数据,我们希望对每一个有明显层次结构的细分领域建立一棵“技能树”,并使用匹配算法把数据匹配到技能树对应的节点上。那么,我们就完成了对领域数据的层次化划分。这与文本数据的标签化是正交的关系:技能树上的一个节点的数据可能含有多个标签,但是这些标签应该尽可能是地属于这个技能树领域的。
有了技能树,我们能做什么? 基于标签的数据,我们能做的是在一个“点”上
对数据做搜索和匹配。基于技能树,我们则可以在一条“线”上
对数据做搜索和匹配:来到某个节点后,节点是可以前进、后退。
进一步,一棵树,多少是按入门、进阶、中阶、高阶的布局展开的。因此当数据落到领域技能树里,我们就有了对数据的难度的大致划分。我们知道学习的规律上,你总是应该在 “比当前水平高一些的范围内展开学习”
,也就是所谓的“在学习区里学习”。当我们对数据做了划分,就有了匹配真正的“学习区”数据的基础。
实践上,首先对一个领域构建一棵技能树,一棵技能树下有初/中/高三个一级节点,每个节点下通过书籍目录、领域可靠权威站点、以及相关的知识图谱(CSDN知识图谱)通过算法和人工编辑结合的方式合成技能树,在过程中要解决许多技能树优化问题 。分阶段地,我们优先发布 Python/Java/云原生的技能树,放在CSDN技能树开放仓库 上,同时展示一些初步的数据覆盖统计。
知识图谱是一个听上去挺高大上的名词,但要在实际的系统中构建起有用的知识图谱系统,基于知识图谱构建有价值的产品,还是需要付出努力的。回到开篇,原理上来说,如果关系型数据已经能很好的解决问题,创造足够优秀甚至创新的产品,就不必下一步。反之,如果有海量的半结构化非结构化数据,经过深度结构化后能发掘出原来数据库增删查所不能提供的数据的维度,支撑产品上上进一步的迭代甚至创新,那么我们就说:使用机器学习、深度学习的方式对数据的深度结构化,是一个独特和有价值的事情。事实上,从结构化和非结构化数据的角度,也能看清机器学习和传统关系型数据处理之间的差异,再复杂的SQL查询它还是数据库查询,不是机器学习,但是对数据结构化后,提供的查询可以是SQL查询也可以是其他非SQL查询。
基于标签和技能树,长期来看,会是一个以解决应用需求为目标的构建知识图谱的过程。这里面有很多工程和迭代问题需要逐步解决。
通过这些分析,厘清标签、技能树和知识图谱之间的关系,目的是在实践中保持清晰的目标,同时建立起团队和项目的长期主义:区分重要和紧急的目标。
–end–
以上是关于NLP 实战 | 标签技能树和知识图谱的主要内容,如果未能解决你的问题,请参考以下文章
干货 | NLP知识图谱教程书籍网站工具...(附资源链接)