宝贝baby996
1 F. Sebastiani. “Machine learning in automated text categorization.” ACM Computing Surveys, 34(1), pp. 1-47, 2002. (.pdf)2 Aas K., Eikvil L.. Text Categorisation: A Survey. TechnicalReport. Norwegian Computing Center, Oslo, Norway, M. Rogati and Y. Yang. High-performing feature selection for text classification ACM CIKM 2002. (.pdf)4 Tie-Yan Liu, Yiming Yang, Hao Wan, et al, Support Vector Machines Classification with Very Large Scale Taxonomy, SIGKDD Explorations, Special Issue on Text Mining and Natural Language Processing, , , pp36~43, 2005. (.pdf)5 苏金树、张博锋、徐 昕,基于机器学习的文本分类技术研究进展 软件学报 17(9): 1848-1859, (.pdf)6 基于统计学习理论的支持向量机算法研究7 瓦普尼克(著),张学工(译),统计学习理论的本质 清华大学出版社 SVMlight9 SVMTorch
明明白白我旳心
首先,如何构建一个完整的机器学习项目呢? 主要有以下几个步骤:
个人认为这里最重要的是第5步,特征工程。 何为特征工程呢?顾名思义,就是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。 本质上讲,特征工程是一个表示和展现数据的过程;实际工作中,特征工程的目的是去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。 好的特征工程可以 ①降低模型复杂度,减小过拟合;②提升模型泛化性能;③加快模型训练和预测速度。
为什么必须要进行特征工程呢?在实际任务中,我们接收到的数据往往是高维,非线性,高噪声的,比如一张256*256像素*3(RGB通道数)的图片,如果我们不*特征提取,那么就需要把这196608个特征都使用上,对于分类器来讲,这是必然会造成过拟合的。事实上对于一张图片来说,它关键的信息也就那么几个部位,同时你完全可以采用一种压缩的方法把它们用更小的图像展示出来,输入到训练网络中。本质上来讲,图像压缩也就是一种特征工程。
对于文本这样的非结构化数据来讲呢(图片、音频、文本、视频都是非结构化数据)? 文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。所以特征工程很重要,可以由四部分组成:
文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。文本向量化就是讲文本表示成一系列能够表达文本语义的向量。 词袋模型是最早的以词语为基本处理单元的文本向量化方法。
词袋法(Bag Of Words,BOW) 基于这样一个朴素的思想:对训练集词库中的每一个词构建唯一的 独热向量(One-hot) 表示,每个单词用 00000...0100..00000 表示,向量的长度为词库的长度,对于每个词表示出的one-hot向量,只有一个特定位置是1,其余都是0。 对于一篇文本而言,同样用一个1*dim(dim表示词数量)向量来表示,其中每个元素表示词典中相关元素在文档中出现的次数。(也有的词袋模型中只要出现该词就置1,否则置0,除了0和1没有其他数字) 例如有如下两个文档:
①引入词频: 顾名思义,这是文本的词袋表示向量不再是普通的 00102100...了,相应位置上的词权重不再是该文本中某个词的数量,而是该词语在整个 语料库 上的词频。改进后的文本词袋表示如 0 0 67 0 187 43 0 0...
②引入tf-idf: 这是较常见的做法: Tf-Idf ,即 词频-逆文档频率。 TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。 是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。 TF-IDF基于这样一个朴素的思想: 某个词的重要性与它在文件中出现的次数呈正比,与它在语料库中出现的次数呈反比。
IDF的常用计算公式如下图 这里D为语料库中总文档数,D(i)为语料库中出现词i的文档数量,注意这里 分母+1 ,这是采用了 拉普拉斯平滑 ,避免有部分新的词没有在语料库中出现过从而导致分母为0的情况出现。 此外,注意这里用到了log函数 ,即对idf的值取了对数。 至于为什么tf和idf是相乘而不是相加,idf为什么要取对数,拉普拉斯平滑方法的选择,这些都是经过大量理论推导和实验研究的,具体细节此处不表。 最后,需要注意的是,同一个词,在同一语料库下的不同文档中,它的tf-idf值是不同的:准确的来讲,是idf值相同,但tf值不同,因为词频的计算是依据特定文档的。
③引入N-gram 针对词袋模型无法表达语序这样的缺陷,有人提出了N-gram模型。本质上来讲,N-gram是一种语言模型,我们这里只是借用了它的思想,即为了解决词袋模型不考虑语序关系的问题,我们构建了一个大小为N的词滑动窗口进行新的表征。其实词袋模型就是一个 1-Gram模型 举例来说,对于一句话
其对应的词袋模型为:
对应的2-gram模型为:
其他的话本质上还是和词袋模型相同:N-gram模型的缺点是会造成更高的时空开销,维度也更加稀疏了。 关于N-gram在语言模型上的知识以后再表。 其他方法亦可另见《python自然语言处理实战:核心技术与算法》P85:tf-idf算法、TextRank算法、LSA/LSI/LDA算法
文本表示是自然语言处理中的基础工作,文本表示的好坏直接影响到整个自然语言处理系统的性能。文本向量化是文本表示的一种重要方式。文本向量化就是讲文本表示成一系列能够表达文本语义的向量。
当前阶段,对文本向量化的大部分研究都是通过词向量化来实现的。与此同时,也有相当一部分研究者将文章或者句子作为文本基本处理单元,提出了doc2vec和ste2vec技术。 基于embedding的词表示,其核心思想是: 上下文相似的词,其语义也相似。 这就是著名的 词空间模型(word space model) ,词向量通常使用神经网络模型训练得到,神经网络模型就是根据上下文与目标词之间的关系进行建模。 word2vec glove fasttext word2vec改进→doc2vec:word2vec丢失了文本的语序信息,而文本的语序包含了重要信息。 doc2vec 主要有两个模型: DM和DBOW 模型,DM和CBOW模型相对应,可以根据上下文词向量和段向量预测目标词的概率分布;DBOW与Skip-gram相对应,只输入段向量,预测从段落中随机抽取的词组概率分布。总体而言,doc2vec是word2vec的升级,不仅提取了文本的语义信息,而且提取了文本的语序信息。
关于word2vec篇幅有点大,我们不在这里讲了,移步 此处
cnn rnn NN的好处在于能end2end实现模型的训练和测试,利用模型的非线性和众多参数来学习特征,而不需要手工提取特征。CNN善于捕捉文本中关键的局部信息,而RNN则善于捕捉文本的上下文信息(考虑语序信息),并且有一定的记忆能力。
天凄微凉
作为NLP领域最经典的使用场景之一,文本分类积累了许多的实现方法。这里我们根据是否使用深度学习方法将文本分类主要分为一下两个大类:
随着统计学习方法的发展,特别是在90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典玩法,这个阶段的主要套路是人工特征工程+浅层分类模型。整个文本分类问题就拆分成了 特征工程 和 分类器 两部分。
这里的特征工程也就是将文本表示为计算机可以识别的、能够代表该文档特征的特征矩阵的过程。在基于传统机器学习的文本分类中,我们通常将特征工程分为 文本预处理、特征提取、文本表示 等三个部分。
文本预处理过程是提取文本中的关键词来表示文本的过程 。中文文本预处理主要包括 文本分词 和 去停用词 两个阶段。 文本分词 ,是因为很多研究表明特征粒度为词粒度远好于字粒度(其实很好理解,因为大部分分类算法不考虑词序信息,基于字粒度显然损失了过多“n-gram”信息)。具体到中文分词,不同于英文有天然的空格间隔,需要设计复杂的分词算法。传统分词算法主要有 基于字符串匹配的正向/逆向/双向最大匹配 ; 基于理解的句法和语义分析消歧 ; 基于统计的互信息/CRF方法 。近年来随着深度学习的应用, WordEmbedding + Bi-LSTM+CRF方法 逐渐成为主流,本文重点在文本分类,就不展开了。 而 停止词 是 文本中一些高频的代词、连词、介词等对文本分类无意义的词 ,通常维护一个停用词表,特征提取过程中删除停用表中出现的词,本质上属于特征选择的一部分。
特征提取包括 特征选择 和 特征权重计算 两部分。 特征选择的基本思路 是 根据某个评价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项 。常用的评价有:文档频率、互信息、信息增益、χ²统计量等。 特征权重计算 主要是经典的TF-IDF方法及其扩展方法。 TF-IDF的主要思想 是 一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比 。
文本表示的目的是把文本预处理后的转换成计算机可理解的方式,是决定文本分类质量最重要的部分。传统做法常用 词袋模型 (BOW, Bag Of Words)或 向量空间模型 (Vector Space Model),最大的 不足 是忽略文本上下文关系,每个词之间彼此独立,并且无法表征语义信息。
大部分机器学习方法都在文本分类领域有所应用,比如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵和神经网络等等。
FastText 是Facebook AI Research在16年开源的一种文本分类器。 其 特点 就是 fast 。相对于其它文本分类模型,如 SVM , Logistic Regression 等模型,fastText能够在保持分类效果的同时,大大缩短了训练时间。
FastText方法包含三部分, 模型架构 , 层次SoftMax 和 N-gram特征 。
FastText模型架构和 Word2Vec 中的 CBOW 模型很类似,因为它们的作者都是Facebook的科学家Tomas Mikolov。不同之处在于,FastText 预测标签 ,而CBOW 模型 预测中间词 。
TextCNN 是利用卷积神经网络对文本进行分类的算法,它是由 Yoon Kim 在2014年在 “ Convolutional Neural Networks for Sentence Classification ” 一文中提出的。详细的原理图如下。
特征 :这里的特征就是词向量,有 静态(static) 和 非静态(non-static) 方式。static方式采用比如word2vec预训练的词向量,训练过程不更新词向量,实质上属于迁移学习了,特别是数据量比较小的情况下,采用静态的词向量往往效果不错。non-static则是在训练过程中更新词向量。推荐的方式是 non-static 中的 fine-tunning方式,它是以预训练(pre-train)的word2vec向量初始化词向量,训练过程中调整词向量,能加速收敛,当然如果有充足的训练数据和资源,直接随机初始化词向量效果也是可以的。
通道(Channels) :图像中可以利用 (R, G, B) 作为不同channel,而文本的输入的channel通常是不同方式的embedding方式(比如 word2vec或Glove),实践中也有利用静态词向量和fine-tunning词向量作为不同channel的做法。
一维卷积(conv-1d) :图像是二维数据,经过词向量表达的文本为一维数据,因此在TextCNN卷积用的是一维卷积。一维卷积带来的问题是需要设计通过不同 filter_size 的 filter 获取不同宽度的视野。
Pooling层: 利用CNN解决文本分类问题的文章还是很多的,比如这篇 A Convolutional Neural Network for Modelling Sentences 最有意思的输入是在 pooling 改成 (dynamic) k-max pooling,pooling阶段保留 k 个最大的信息,保留了全局的序列信息。
参考文献
在“双碳”目标下,供应链领域实现碳减排的关键在于采用新技术、新材料、新工艺,从汽车零部件的开发设计到研究试制,从批量生产到原材料选用,几乎各个环节都可以深入挖掘
1、你的产品的核心竞争力是什么?2、你怎么宣传你的品牌3、你怎么营销你的产品(你怎么让别人接受你的产品)4、你公司资金投入多少,为什么是这么多,怎么安排的?5、
你可以去挑战杯官方网站找一些往年获过奖的题目进行分析下,我这里只有最近一届的获奖名单:第十届挑战杯获奖(社科类)名单特等奖广州大学 哲学社会科学类社会调查报告和
挑战杯的学术论文是可以加分的。已经发表的论文可以参赛,并可以加分。
1 F. Sebastiani. “Machine learning in automated text categorization.” ACM Comput