知识图谱与计算机子学科(知识表示、自然语言处理、数据库、机器学习)关系如下图所示。
管道式方法,主要就是将关系抽取拆分为两个步骤,实体抽取+关系识别 2个主要的步骤,因为这个过程是串联起来的,所以称之为pipeline方法
2.1特征工程+NLP工具
特征工程:确定分析什么?构建判定图;给数据打上标签
一、确定我们要分析什么,构建研究或分析的指标体系;指标体系一部分是数据分析师根据业务经验枚举的,还有一些是通过数据归纳出来的。
构建维度的方法,1、比如根据产品属性构建,比如要做产品的用户满意度分析,我们需要构建用户对产品满意度的评价维度有质量、功能、性能、外观、材质、包装、气味、价格等;2、根据过程构建,比如对服务满意度的评价维度有配送、安装、维修、售后、客服等;3、根据定义及分类构建,我想调研对于***事件网民的情绪状态,那对情绪的分类有悲伤、喜悦、愤怒、失望等,这些就可以作为我们的标签体系;
二、构建每个指标体系的关键特征知识库,什么叫关键特征呢,我们看给的这个示例,描述颜色的特征词,有颜色、色彩、配色,还有具体的白色,黑色、黄色等,这些词都表示颜色,所以我们将这类词放在一起建立一个词集,叫颜色,这样,如果文本中出现词集中的任何一个词,我们就可以打上“颜色”的标签。
我们用于构建特征知识库的工具叫判定图,下面就是一个判定图的截图,判定图里除了构建关键特征,还有特征之间的语义及句式关系,比如品牌与负面词汇出现在一句话里,这条数据表示“品牌负面”这个句式关系,除了可以限制出现在一句话里,我们还可以设置次数、顺序等逻辑关系;用判定图工具可以构建20余种逻辑表达,不需要编程,都是图形化的操作,人机协同构建多维度、多层级、精细复杂的知识图谱;
三、通过判定图给数据打上标签,也就是将用户发布的文本非结构化数据转化为用标签表示成结构化数据,方便对标签进行统计分析,洞察数据。
补充(特征选择)
研究领域:文本分类、依存分析、命名实体、词性标注、中文分词、情感分析、信息抽取、文本摘要。NLP可以在词法分析(Lexical Analysis)、语法分析(Syntactic Analysis)、语义分析(Semantic Analysis)以及语用分析(Pragmatic Analysis)等层面进行展开。
断句一般通过标点符号。
分词是指对文本进行词汇的切割。
词性标识是给句子中的每个词标记相应的词性。
词形还原是指将某一单词还原至原型。对于分析任务来说起噪音作用的被称为停用词。依存句法分析旨在识别句子的语法结构。
命名实体识别是识别句子的词序列中具有特定意义的实体,并将其标注为人名、机构名、日期、地名、时间和职位等类别的任务。
共指消解旨在识别句子中同一个实体的不同表述。
语义角色表述是将句子中的某些词或短词标注为给定语义角色的过程
现有(分词)常用工具
BosonNLP、http://bosonnlp.com/2IKAnalyzerhttp://git.oschina.net/wltea/IK-Analyzer-2012FF3NLPIR
http://ictclas.nlpir.org/4
SCWS
http://www.xunsearch.com/scws/5
结巴分词http://www.oschina.net/p/jieba6
盘古分词http://pangusegment.codeplex.com/7
庖丁解牛http://zengzhaoshuai.iteye.com/blog/9863148
搜狗分词http://www.sogou.com/labs/webservice/9
腾讯文智http://nlp.qq.com/10
新浪云http://www.sinacloud.com/doc/sae/php/storage.html11
语言云http://www.ltp-cloud.com/demo/
————————————————
版权声明:本文为CSDN博主「樱夕夕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21460525/article/details/51957541
循环神经网络(Recurrent Neural Network,RNN)是一类专门用于处理序列数据的神经网络。RNN得以实例化的根本原因也在于参数共享。RNN利用序列数据的性质实现了序列上不同时间点的权重共享。RNN中的“循环”本质上是指数据在t时刻的状态取决于其前序序列,这在语音与文本数据处理中是必要的。
卷积神经网络(CNN)
卷积神经网络是一类以卷积层(使用卷积操作代替全连接层所使用的的矩阵乘法操作)作为网络的基本元素的深度神经网络,一般常用于处理图像数据。CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式,
卷积层的引入的CNN的根本特征。卷积层使用一个相对于原始数据而言规模很小的卷积核(有时又叫做过滤器)作为参数。卷积操作如下图所示,因此卷积操作能显著降低表示的复杂性。在CNN的卷积层之后,往往还跟着一个池化层。池化层使用池化操作进一步降低表示的复杂性。
CNN的结构形式:输入层-》卷积层->池化层-》重复卷积层与池化层-》全连接层-》输出结果。CNN的基本结构包括两种特殊的神经元层,其一为卷积层,每个神经元的输入与前一层的局部相连,并提取该局部的特征;其二是池化层,用来求局部敏感性与二次特征提取的计算层。这种两次特征提取结构减少了特征分辨率,减少了需要优化的参数数目。
卷积计算,最左边的是卷积的输入,中间的为卷积核,最右边的为卷积的输出。可以发现卷积计算很简单,就是卷积核与输入对应位置相乘然后求和。除了图中绿颜色的例子,我们可以计算一下图中红色圈对应的卷积结果:(-1)*2+(-1)9+(-1)2+14+14=-5。以上就是卷积计算的过程
池化层(pooling)的作用主要是降低维度,通过对卷积后的结果进行降采样来降低维度,分为最大池化和平均池化两类。
最大池化顾名思义,降采样的时候采用最大值的方式采样,如图所示,其中池化核的大小为22,步长也为22
平均池化就是用局部的平均值作为采样的值,还是上面的数据,平均池化后的结果为
全连接层就是把卷积层和池化层的输出展开成一维形式,在后面接上与普通网络结构相同的回归网络或者分类网络,一般接在池化层后面
槽可以理解为实体已明确定义的属性。例如打车中的,出发地点槽,目的地槽,出发时间槽中的属性分别是“出发地点”、“目的地”和“出发时间”。通常把领域识别和用户意图检测当做文本分类问题,而把槽填充当做序列标注(Sequence Tagging)问题,也就是把连续序列中每个词赋予相应的语义类别标签。 因此可以使用序列标注模型来抽取语义槽。(CRF (条件随机场)是过去经常使用的序列标注模型,但是受限于马尔科夫假设,它无法很好的处理长距离依赖问题。 随着深度学习方法的流行,人们使用循环神经网络,如双向 LSTM 来解决长距离依赖问题,同时还避免了繁琐的特征工程工作。 最近,人们将这两种方法进行融合,即双向 LSTM-CRF 模型,进一步提高了槽填充的准确率。)
经典的rnn结构的输入和输出序列必须要是等长,它的应用场景也比较有限。而第四种它可以是输入和输出序列不等长,这种模型便是seq2seq模型,即Sequence to Sequence。它实现了从一个序列到另外一个序列的转换,
seq2seq属于encoder-decoder结构的一种,这里看看常见的encoder-decoder结构,基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码,如下图,获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量C。也可以对最后一个隐含状态做一个变换得到语义向量,还可以将输入序列的所有隐含状态做一个变换得到语义变量。
而decoder则负责根据语义向量生成指定的序列,这个过程也称为解码,如下图,最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的rnn中,得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入,而且其中语义向量C只作为初始状态参与运算,后面的运算都与语义向量C无关。
远程监督的英文名称Distant Supervision,是目前关系抽取中比较常见的一类做法。该方法由 M Mintz 大佬于ACL2009上首次提出,它既不是单纯的传统意义上的监督语料,当然也不是无监督。它是一种用KB去对齐朴素文本的标注方法(Distant supervision for relation extraction without labeled data )。 Freebase( KB)
KB中已经存在实体-关系-实体的三元组,只需要把这三元组付给朴素文本中相应的句子就可以了。这时候z大佬就提出了一个非常大的假设:如果一个句子中含有一个关系涉及的实体对,那这个句子就是描述的这个关系。也就是说,报纸里所有含有中国和北京的句子,全都假设说的是北京是中国的首都。然后把这些句子全都提取出来作为首都这个关系的训练语料,直接批量打个标签,实体识别和标注一举两得。然后把一个关系对应的所有句子打个包,称作一个bag,干脆一个bag一个标签。这就是后来又有的工作,被叫做多示例学习。 上述方法有很多不严谨的地方,例如乔布斯是苹果的创始人,和乔布斯吃了一个苹果,表达的完全不是一个关系。这就说明远程监督的数据里存在大量的噪声,我们把真正含有指定关系的句子叫做real instance ,实际上不含任何关系的句子叫NA,其余的就都是反例。这个噪声问题被叫做wrong label 问题。这是远程监督方法第一个需要解决的大问题
下面主要介绍三种远程监督的优化方法:
1、dynamic-transition matrix(动态转移矩阵),它能很好的拟合由 distant supervision 所带来的噪声。通过该矩阵,我们能够大大提高 relation extraction 的效果。
2、rule learning(规则学习),通过定义规则,定义否定模式(negative pattern)过滤掉一些噪音数据,可以很大程度提高性能。缺点是规则依赖人工定义,通用性差,但是方法本身简单有效。
3、清华刘知远团队的NER,利用了包含实体对的所有的句子信息,提出了attention机制,去解决远程监督的wrong label的问题
————————————————
版权声明:本文为CSDN博主「知然xu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37565948/article/details/84999919
深度学习中最令人振奋的最新动态之一就是端到端深度学习的兴起,那么端到端学习到底是什么呢?简而言之,以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。过去解决一个人工智能问题(以图像识别为例)往往通过分治法将其分解为预处理、特征提取与选择、分类器设计等若干步骤。分治法的动机是将图像识别的母问题分解为简单、可控且清晰的若干小的子问题。不过分步解决子问题时,尽管可在子问题上得到最优解,但子问题上的最优并不意味着就能得到全局问题的最后解。比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到下一步骤,从而影响整个训练的结果,这是非端到端的。 对此,深度学习则为我们提供了另一种范式(Paradigm)即“端到端”学习方式,整个学习流程并不进行人为的子问题划分,而是完全交给深度学习模型直接学习从原始输入到期望输出的映射。相比分治策略,“端到端”的学习方式具有协同增效的优势,有更大可能获得全局最优解。而端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它,输入为未经任何人为加工的原始样本形式,经过神经网络,输出结果(“就是输入一头猪,输出的是香肠”————来自知乎)。应用简单,但需要大量数据。
————————————————
版权声明:本文为CSDN博主「SunshineSki」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SunshineSki/article/details/83695713
把这种将知识图谱中包括实体和关系的内容映射到连续向量空间方法的研究领域称为知识图谱嵌入(Knowledge Graph Embedding)、知识图谱的向量表示、知识图谱的表示学习(Representation Learning)、知识表示学习,使用向量的表达方式可以提高应用时的计算效率,当把知识图谱的内容映射到向量空间时,相应的算法可以使用数值计算,所以计算的效率也会同时提高。
方法:转移距离模型(Translational Distance Model的主要思想是将衡量向量化后的知识图谱中三元组的合理性问题,转化成衡量头实体和尾实体的距离问题。这一方法的重点是如何设计得分函数,得分函数常常被设计成利用关系把头实体转移到尾实体的合理性的函数。受词向量的启发,由词与词在向量空间的语义层面关系,可以拓展到知识图谱中头实体和尾实体在向量空间的关系。也就是说,同样可以考虑把知识图谱中的头实体和尾实体映射到向量空间中,且它们之间的联系也可以考虑成三元组中的关系
语义匹配模型(Semantic Matching Models),更注重挖掘向量化后的实体和关系的潜在语义该方向的模型主要是RESCAL[13]以及它的延伸模型。
RESCAL模型的核心思想是将整个知识图谱编码为一个三维张量,由这个张量分解出一个核心张量和一个因子矩阵,核心张量中每个二维矩阵切片代表一种关系,因子矩阵中每一行代表一个实体。
逻辑规则(Logical Rules)也是常被用来考虑的附加信息,这里讨论的重点主要是霍恩子句,例如简单规则。Guo[19]提出了一种以规则为指导的知识图谱嵌入方法,其中提出的软规则(Soft rule)指的是使用AMIE+规则学习方法在知识图谱中挖掘的带有置信度的规则,该方法的整体框架是一个迭代的过程,其中包含两个部分,称为软标签预测阶段(Soft Label Prediction)和嵌入。
介绍各个指标之前,我们先来了解一下
。假如现在有一个二分类问题,那么预测结果和实际结果两两结合会出现如下四种情况。
由于用数字1、0表示不太方便阅读,我们转换一下,用T(True)代表正确、F(False)代表错误、P(Positive)代表1、N(Negative)代表0。先看预测结果(P|N),然后再针对实际结果对比预测结果,给出判断结果(T|F)。按照上面逻辑,重新分配后为
TP、FP、FN、TN可以理解为
TP:预测为1,实际为1,预测正确。
FP:预测为1,实际为0,预测错误。
FN:预测为0,实际为1,预测错误。
TN:预测为0,实际为0,预测正确
首先给出准确率(Accuracy)的定义,即预测正确的结果占总样本的百分比,表达式为
虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。
比如在样本集中,正样本有90个,负样本有10个,样本是严重的不均衡。对于这种情况,我们只需要将全部样本预测为正样本,就能得到90%的准确率,但是完全没有意义。对于新数据,完全体现不出准确率。因此,在样本不平衡的情况下,得到的高准确率没有任何意义,此时准确率就会失效。所以,我们需要寻找新的指标来评价模型的优劣。
精确率(Precision)是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率,表达式为
精确率和准确率看上去有些类似,但是是两个完全不同的概念。精确率代表对正样本结果中的预测准确程度,准确率则代表整体的预测准确程度,包括正样本和负样本。
召回率(Recall)是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率,表达式为
下面我们通过一个简单例子来看看精确率和召回率。假设一共有10篇文章,里面4篇是你要找的。根据你的算法模型,你找到了5篇,但实际上在这5篇之中,只有3篇是你真正要找的。
那么算法的精确率是3/5=60%,也就是你找的这5篇,有3篇是真正对的。算法的召回率是3/4=75%,也就是需要找的4篇文章,你找到了其中三篇。以精确率还是以召回率作为评价指标,需要根据具体问题而定。
精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示
如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢?
以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏,那么就必须定一个阈值。比如大于0.5指定为好用户,小于0.5指定为坏用户,然后就可以得到相应的精确率和召回率。但问题是,这个阈值是我们随便定义的,并不知道这个阈值是否符合我们的要求。因此为了寻找一个合适的阈值,我们就需要遍历0-1之间所有的阈值,而每个阈值都对应一个精确率和召回率,从而就能够得到上述曲线。
根据上述的P-R曲线,怎么判断最好的阈值点呢?首先我们先明确目标,我们希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高。因此,选择合适的阈值点,就需要根据实际问题需求,比如我们想要很高的精确率,就要牺牲掉一些召回率。想要得到很高的召回率,就要牺牲掉一些精准率。但通常情况下,我们可以根据他们之间的平衡点,定义一个新的指标:F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1分数表达式为
上图P-R曲线中,图中平衡点的F1分数为召回率的值或准确率的值。
6