分类目录:《系统学习Python》总目录 装饰器的代码依赖于内省API和对参数传递的微妙限制。为了完全地通用,原则上我们可以完整模拟Python的参数匹配逻辑,来看看哪个名称以何种模式传入,但是这对于我们的工具来说太复杂了。如果我们能够设法根据所有期待参数的名称集合来匹配按照名称传人的参数,从而判断哪个位置参数真正地出现在给定的调用中,那将会更好。 在函数对象上以及与其关联的代码对象上可用
随着Word Embedding在NLP很多领域取得不错的成果,人们开始考虑把这一思想推广到其他领域。从word2vec模型的实现原理可以看出,它主要依赖一条条语句,而每条语句就是一个序列。由此,只要有序列特征的场景应该都适合使用这种Embedding思想。下图表示了不同用户在一定时间内查询物品形成的序列图形,可以看出,物品形成的序列与词形成的序列(语句)有很多相似的地方,因此,人们把Word E
分类目录:《系统学习Python》总目录 现在,给定了这些限制和假设,我们可以用这一算法来考虑调用中的关键字参数以及省略的默认参数。当拦截了一个调用,我们可以做如下假设和推断: 设N NN是传递的位置参数的个数,从*pargs元组的长度中获得。 *pargs中的所有N NN个位置参数,必须与从数的代码对象获取的前N NN个期待的参数匹配。依据前面列出的Python的调用顺序规则,这是
分类目录:《系统学习Python》总目录 在前面的文章中,我们已经编写了函数装饰器来管理函数调用,但是正如我们已经见到的,从Python2.6和Python3.0起装饰器已被扩展,因此也能在类上使用。如同前面所提到的,尽管类装饰器与函数装饰器在概念上很相像,但类装饰器是在类上使用的一一它们可以用于管理类自身,或者用来拦截实例创建调用以管理实例。和函数装饰器一样,类装饰器其实只是可选的语法糖,
从大量无标注数据中进行预训练使许多自然语言处理任务获得显著的性能提升。总的来看,预训练模型的优势包括: 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛是一种有效的正则化手段,避免在小数据集上过拟合,而一个随机初始化的深层模型容易对小数据集过拟合下图就是各种预训练模型的思维导图,其分别按照词嵌入(
本文介绍信息抽取、情感分析、问答系统、机器翻译和对话系统等自然语言处理应用任务。这些任务可以直接或间接地以产品的形式为终端用户提供服务,是自然语言处理研究应用落地的主要技术。 信息抽取 信息抽取(Information Extraction,IE)是从非结构化的文本中自动提取结构化信息的过程,这种结构化的信息方便计算机进行后续的处理。另外,抽取的结果还可以作为新的知识加入知识库中。信息抽取一般
分类目录:《系统学习Python》总目录 前文基于类的代码的微妙之处是,尽管它对于拦截简单函数调用有效,但当它应用于类级别的方法函数的时候,并不是很有效: def decorator(F): def __init__(self, func): self.func = func def __call__(self, *args): pa
从大量无标注数据中进行预训练使许多自然语言处理任务获得显著的性能提升。总的来看,预训练模型的优势包括: 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务 为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛 是一种有效的正则化手段,避免在小数据集上过拟合,而一个随机初始化的深层模型容易对小数据集过拟合 下图就是各种预训练模型的思维导图
分类目录:《系统学习Python》总目录 用于函数装饰器的众多技术也同样用于新的类装饰器的编写,但是一些技术可能包含两层的扩增,以便同时管理实例构造函数调用和实例接口访问。由于类装饰器也是一个返回可调用对象的可调用对象,因此大多数函数和类的组合已经足够了。 无论怎样编写,装饰器的返回结果就是随后创建实例时所运行的。例如,要在一个类创建之后直接管理它,返回最初的类自身: def decorat
分类目录:《系统学习Python》总目录 前面的文章证明了函数装饰器已经被如此有用,以至于这一模式从Python2.6和Python3.0起就被扩展,并允许使用类装饰器。因为与元类相重叠的角色,它们最初是被抵制的;然而因为它们提供了一种实现诸多相同目标的更简单的方法,最终被采用了。 类装饰器与函数装饰器密切相关,实际上,它们使用相同的语法和非常相似的编程模式。然而,类装饰器并不包装单个函数
分类目录:《系统学习Python》总目录 闭包函数(带有外围def作用域引用和嵌套的def)常常可以实现相同的效果,特别是用于像被装饰的最初咱数这样的静态数据时。然而在下面这个例子中,我们也需要外层作用域中的一个计数器,它随着每次调用而改变,而这在Python2.X中是不可能的。在Python2.X中,我们仍可以依据前面文章使用的类和属性,或选择其他方案。使用声明把状态变量移出到全局作用域是
分类目录:《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的,它们大体上是一种语法糖:在def语句结束时通过另一个函数来运行这个函数,把最初的函数名重新绑定到返回的结果。 装饰器自身是一个返回可调用对象的可调用对象。也就是说,它返回了一个对象,当通过其最初名称调用被装饰函数的时候,将会调用这个对象一一一它可以是拦截之后调用的一个包装器对象,也
分类目录:《系统学习Python》总目录 有的时候,一个装饰器不够用。例如,假设我们编写两个将要在开发过程中使用的函数装饰器一个用来在函数调用之前测试参数类型,另一个用来在函数调用之后测试返回值类型。我们可以独立地使用任何一个,但是如果想要在一个单独的函数上同时使用这二者,我们真正需要的是嵌套这两者的方法,这样其中一个装饰器的结果就是被另一个装饰器所装饰的函数。哪个装饰器被嵌套是无关紧要的,
分类目录:《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的,它们大体上是一种语法糖:在def语句结束时通过另一个函数来运行这个函数,把最初的函数名重新绑定到返回的结果。 函数装饰器是一种关于函数的运行时声明,函数的定义需要遵守此声明。装饰器在定义函数或方法的def语句的前一行编写,并且它由@符号以及紧随其后的对于元函数的一个引用组成.这是管
从大量无标注数据中进行预训练使许多自然语言处理任务获得显著的性能提升。总的来看,预训练模型的优势包括: 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务 为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛 是一种有效的正则化手段,避免在小数据集上过拟合,而一个随机初始化的深层模型容易对小数据集过拟合 下图就是各种预训练模型的思维导图,其分别按照
从大量无标注数据中进行预训练使许多自然语言处理任务获得显著的性能提升。总的来看,预训练模型的优势包括: 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛是一种有效的正则化手段,避免在小数据集上过拟合,而一个随机初始化的深层模型容易对小数据集过拟合下图就是各种预训练模型的思维导图,其分别按照词嵌入(W
由于自然语言处理任务的多样性以及评价的主观性,因此很难使用单一的评价指标衡量所有任务的性能,所以针对不同类型的任务,往往采用不同的评价方法。对评价方法的准确把握,有助于深入理解各项自然语言处理任务。准确率(Accuracy)是最简单、直观的评价指标,经常被应用于文本分类等问题。其计算公式为:但是,并非全部的序列标注问题都可以采用准确率进行评价,如在将分词、命名实体识别等序列分割问题转化为序列标注问
除了文本分类和结构预测问题,还有很多自然语言处理问题可以归为序列到序列(Sequence-to-Sequence,Seq2seq)问题。机器翻译问题就是典型的代表,其中,输入为源语言句子,输出为目标语言句子。将其推广到序列到序列问题,输入就是一个由若干词组成的序列,输出则是一个新的序列,其中,输入和输出的序列不要求等长,同时也不要求词表一致。使用传统的机器学习技术解决序列到序列问题是比较困难的,而
文本分类(Text Classification, Text Categorization)是最简单也是最基础的自然语言处理问题。即针对一段文本输入,输出该文本所属的类别,其中,类别是事先定义好的一个封闭的集合。文本分类具有众多的应用场景,如垃圾邮件过滤(将邮件分为垃圾和非垃圾两类)、新闻分类(将新闻分为政治、经济和体育等类别)等。在《自然语言处理从入门到应用——自然语言处理的应用任务》文章中介绍
与文本分类问题不同,在结构预测问题中,输出类别之间具有较强的相互关联性。例如,在词性标注任务中,一句话中不同词的词性之间往往相互影响,如副词之后往往出现动词或形容词,形容词之后往往跟着名词等。结构预测任务通常是自然语言处理独有的。下面介绍三种典型的结构预测问题——序列标注、序列分割和图结构生成。 序列标注所谓序列标注(Sequence Labeling),指的是为输入文本序列中的每个词标注相应的标
词性标注词性是词语在句子中扮演的语法角色,也被称为词类(Part-Of-Speech,POS)。例如,表示抽象或具体事物名字(如“计算机”)的词被归为名词,而表示动作(如“打”)、状态(如“存在”)的词被归为动词。词性可为句法分析、语义理解等提供帮助。词性标注(POS Tagging)任务是指给定一个句子,输出句子中每个词相应的词性。例如,当输入句子为: 他 喜欢 下 象棋 。 则词性标注的
自然语言处理的核心任务即是让计算机“理解”自然语言所蕴含的意义,即语义(Semantic)。前文介绍的文本向量表示,可以被认为隐性地蕴含了很多语义信息。而一般意义上的语义分析指的是通过离散的符号及结构显性地表示语义。根据待表示语言单元粒度以及语义表示方法的不同,语义分析又可以被分为多种形式。 从词语的粒度考虑,一个词语可能具有多种语义(词义),例如“打”,含义即可能是“攻击”(如“打人”),还可
自然语言处理的一大特点是任务种类纷繁复杂,有多种划分的方式。从处理顺序的角度,可以分为底层的基础任务以及上层的应用任务。其中,基础任务往往是语言学家根据内省的方式定义的,输出的结果往往作为整个系统的一个环节或者下游任务的额外语言学特征,而并非面向普罗大众。本文和后文介绍几种常见的基础任务,包括词法分析(分词、词性标注)、句法分析和语义分析等。 中文分词词(Word)是最小的能独立使用的音义结合体,
分类目录:《自然语言处理从入门到应用》总目录 无论是基于神经网络语言模型还是word2vec的词向量预训练方法,本质上都是利用文本中词与词在局部上下文中的共现信息作为自监督学习信号。除此之外,另一类常用于估计词向量的方法是基于矩阵分解的方法,例如潜在语义分析(参考《自然语言处理从入门到应用——文本的表示方法》)等。这类方法首先对语料进行统计分析,并获得含有全局统计信息的“词–上下文”共现矩阵,然
《自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)》中介绍了语言模型的基本概念,以及经典的基于离散符号表示的N元语言模型(N-gram Language Model)。从语言模型的角度来看,N元语言模型存在明显的缺点。首先,模型容易受到数据稀疏的影响,一般需要对模型进行平滑处理;其次,无法对长度超过N的上下文依赖关系进行建模。神经网络语言模型(Neural
语言模型(Language Model,LM)(也称统计语言模型)是描述自然语言概率分布的模型,是一个非常基础和重要的自然语言处理任务。利用语言模型,可以计算一个词序列或一句话的概率,也可以在给定上文的条件下对接下来可能出现的词进行概率分布的估计。同时,语言模型是一项天然的预训练任务,在基于预训练模型的自然语言处理方法中起到非常重要的作用,因此这种预训练模型有时也被称为预训练语言模型。本文将主要介
若要利用计算机对自然语言进行处理,首先需要解决语言在计算机内部的存储和计算问题。字符串(String)是文本最自然,也是最常用的机内存储形式。所谓字符串,即字符序列,而其中的一个字符本质上就是一个整数。基于字符串的文本表示方式可以实现简单的字符串增删改查等编辑任务,并能够通过编辑距离等算法计算两个字符串之间的字面相似度。在使用字符串表示(也叫符号表示)计算文本的语义信息时,往往需要使用基于规则的方
自然语言通常指的是人类语言,是人类思维的载体和交流的基本工具,也是人类区别于动物的根本标志,更是人类智能发展的外在体现形式之一。自然语言处理(Natural Language Processing,NLP)主要研究用计算机理解和生成自然语言的各种理论和方法,属于人工智能领域的一个重要甚至核心分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学(Computational Linguisti
分类目录:《深入理解深度学习》总目录相关文章: · Word Embedding(一):word2vec· Word Embedding(二):连续词袋模型(CBOW, The Continuous Bag-of-Words Model)· Word Embedding(三):Skip-Gram模型 · Word Embedding(四):Skip-Gram模型的数学原理· Word Embe
分类目录:《深入理解深度学习》总目录相关文章: · Word Embedding(一):word2vec· Word Embedding(二):连续词袋模型(CBOW, The Continuous Bag-of-Words Model)· Word Embedding(三):Skip-Gram模型· Word Embedding(四):Skip-Gram模型的数学原理· Word Embedd
分类目录:《深入理解深度学习》总目录 近些年在机器学习、深度学习等领域,嵌入(Embedding)技术指用向量表示一个物体,这个物体可以是一个单词、一条语句、一个序列、一件商品、一个动作、一本书、一部电影等,可以说嵌入涉及机器学习、深度学习的绝大部分对象。这些对象是机器学习和深度学习中最基本、最常用、最重要的对象,正因如此,如何有效表示、学习这些对象就显得非常重要。尤其word2vec这样的Wo
分类目录:《深入理解深度学习》总目录相关文章:· Word Embedding(一):word2vec· Word Embedding(二):连续词袋模型(CBOW, The Continuous Bag-of-Words Model)· Word Embedding(三):Skip-Gram模型· Word Embedding(四):Skip-Gram模型的数学原理· Word Embeddin
传统机器学习的输入数据中一般含有分类特征,对这些特征或字段的处理是特征工程的重要内容之一。分类(Categorical)特征也被称为离散特征,而机器学习模型通常只能处理数值数据,所以需要将分类数据转换成数值数据。 有序(Ordinal)类型 有序类型的分类特征存在自然的顺序结构,所以可以对该类型数据进行升序或者降序排列,比如关于衣服型号特征的值可能有S (Small)、M (Middle)、L
前面的文章介绍了由Word Embedding延伸出的Item Embedding等,这些延伸都建立在它们有序列特性的基础上。其实,可延伸的领域还有很多,有些初看起来与序列无关的领域,通过适当变化后,也同样适用。如下图所示,左边是人们在电商网站浏览物品的轨迹,这些轨迹呈图结构,通过一些算法计算后,可以把左图转换为右图这样具有序列样本特征的格式: Graph Embedding与Word Em
分类目录:《深入理解深度学习》总目录 前文介绍了因word2vec而流行的Word Embedding,这种表示方法比离散的独热编码要好很多,因为它不仅降低了维度,还可以反映出语义空间中的线性关系,如“国王-王后≈男-女”这种相似关系。因此word2vec及其他类似方法几乎是所有深度模型必备的方法。但是,这类表示方法是根据语料库生成的字典,一个单词对应一个固定长度的向量,如果遇到一词多义的情况,
分类目录:《深入理解深度学习》总目录 近些年基于深度学习的NLP技术的重大进展主要包括NNLM(2003)、Word Embedding(2013)、Seq2Seq(2014)、Attention(2015)、Transformer(2017)、GPT(2018)、BERT(2018)、XLNet(2019)、GPT-2(2019)、GPT-3(2020)等,主要预训练模型的大致发展脉络
针对随机采样技术的缺点,人们陆续开发出了一些更为高级的采样算法,这类算法均或多或少地利用了样本的局部先验分布信息,并利用这些信息,通过人工干预的方式来移除多数类样本或添加人工合成的少数类样本,从而达到了提升分类性能的目的。在此,我们将此类算法统称为“人工采样技术”。本文及后续文章将对此类技术中最具代表性的五种算法做展开介绍。 SMOTE(Synthetic Minority Oversampli
随机采样是最为简单也是应用最为广泛的一类采样技术,主要分为以下两个类别:随机降采样(Random Under-Sampling,RUS)及随机过采样(Random Over-Sampling, ROS)。其中,前者通过随机移除一定数量的多数类样本来缓解类分布不均衡的影响,而后者则通过简单复制少数类样本的方式来达成不同类在训练样本规模上的平衡。下面将分别对上述两类算法的流程及特点进行简要介绍。 随
分类目录:《深入理解机器学习》总目录相关文章:机器学习中的数学——信息熵(Information Entropy)基于决策树的模型(一)分类树和回归树 基于树的模型(二):集成学习之Bagging和Random Forest基于树的模型(三):集成学习之GBDT和XGBoost基于树的模型(四):随机森林的延伸——深度森林(gcForest)基于树的模型(五):从零开始用Python实现ID3决
相关文章:· 机器学习模型的性能度量 性能评价测度是用于评价分类模型“好坏”的一种量度。对于绝大多数了解分类问题的读者来讲,可能接触最多的一种性能评价测度就是分类准确率(Accuracy)。假设有一个具有m mm个样本的数据集D={(x1,y1),(x2,y2),⋯,(xm,ym)},其中y i 是示例x i 的真实标记,则对于分类模型f,其在该数据集上的分类准确率可由下式计算得到:
自20世纪90年代末,研究人员开始注意到类别不平衡问题起,已有多种学习技术被开发并用于解决此问题,主要包括以下几种。 样本采样技术 样本采样,也称数据层处理方法,顾名思义,即通过增加少数类样本或减少多数类样本的方式来获得相对平衡的训练集,以解决类别不平衡问题。增加少数类样本的方法被称为过采样(Oversampling),而减少多数类样本的方法则被称为降采样或欠采样(Undersampling)
分类目录:《深入理解机器学习》总目录 对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(Performance Measure)。性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。在预测任务中,给定样例
从《类别不平衡分布对传统分类器性能的影响机理》文章可以看出,类别不平衡分布是会对各种传统分类算法的性能产生负面影响的。然而,这种负面影响的大小却与很多因素有关,本文和大家探讨这些影响因素。 类别不平衡比率 如《类别不平衡分布对传统分类器性能的影响机理》所述,在不平衡分类问题中,类别不平衡比率(Imbalanced Ratio, IR)是一个较为重要的概念,其具体可表示为多数类样本数与少数类样本
机器学习算法是一种能够从数据中学习的算法。卡耐基梅隆大学计算机科学学院机器学习系主任Mitchell给出了机器学习算法的定义:对于某类任务T 和性能度量P,一个计算机程序被认为可以从经验E 中学习是指,通过经验E 改进后,它在任务T 上由性能度量P 衡量的性能有所提升。 经验E ,任务T 和性能度量P的定义范围非常宽广,我们会在接下来的文章中提供直观的解释和示例来介绍不同的任务、性能度量和经验,
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信