http://blog.csdn.net/jdbc/article/details/50586042

本文为第一部分,着重介绍文本预处理以及特征抽取的方法。

随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的一类。“文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程”(达观数据科技联合创始人,张健)。文本分类有着广泛的应用场景,例如:

  • 新闻网站包含大量报道文章,基于文章内容,需要将这些文章按题材进行自动分类(例如自动划分成政治、经济、军事、体育、娱乐等。
  • 在电子商务网站,用户进行了交易行为后对商品进行评价分类,商家需要对用户的评价划分为正面评价和负面评价,来获取各个商品的用户反馈统计情况。
  • 电子邮箱频繁接收到垃圾广告信息,通过文本分类技术从众多的邮件中识别垃圾邮件并过滤,提高了邮箱用户的使用效率。
  • 媒体每日有大量投稿,依靠文本分类技术能够对文章进行自动审核,标记投稿中的色情、暴力、政治、垃圾广告等违规内容。

20世纪90年代以前,占主导地位的文本分类方法一直是基于知识工程的方法:借助专业人员的帮助,为每个类别定义大量的推理规则,如果一篇文档能满足这些推理规则,则可以判定属于该类别。但是这种方法有明显的缺点:分类的质量依赖于规则的好坏;需要大量的专业人员进行规则的制定;不具备可推广性,不同的领域需要构建完全不同的分类系统,造成开发资源和资金资源的巨大浪费。

而机器学习技术能很好地解决上述问题,以统计理论为基础,利用算法让机器具有类似人类般的自动“学习”能力——对已知的训练数据做统计分析从而获得规律,再运用规律对未知数据做预测分析。机器学习方法运用在文本分类上的基本过程就是:标注——利用人工对一批文档进行了准确分类,以作为训练集(进行机器学习的材料);训练——计算机从这些文档中挖掘出一些能够有效分类的规则,生成分类器(总结出的规则集合);分类——将生成的分类器应用在有待分类的文档集合中,获取文档的分类结果。由于机器学习方法在文本分类领域有着良好的实际表现,已经成为了该领域的主流。

达观数据团队在处理海量数据方面具有丰富的经验,在文本分类技术方面有深入的实践,并将文本分类技术成功运用到了线上服务中,取得了良好的效果。本文整理了文本分类的基本方法和处理流程,进行了综述性介绍。

(一):文本预处理

1.文本分类流程

文本分类的流程如图 1所示,包括训练、特征抽取、训练模型、分类预测等几个主要环节。

图 1 文本分类流程图

2.文本预处理

2.1文档建模

机器学习方法让计算机自己去学习已经分类好的训练集,然而计算机是很难按人类理解文章那样来学习文章,因此,要使计算机能够高效地处理真实文本,就必须找到一种理想的形式化表示方法,这个过程就是文档建模。文档建模一方面要能够真实地反映文档的内容,另一方面又要对不同文档具有区分能力。文档建模比较通用的方法包括布尔模型、向量空间模型(VSM)概率模型。其中最为广泛使用的是向量空间模型。

经典的向量空间模型(VSM: Vector Space Model)由Salton等人于60年代提出,并成功地应用于著名的SMART文本检索系统。VSM概念非常直观——把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量时,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。文本挖掘系统采用向量空间模型,用特征词条(T1,T2,…Tn)及其权值Wi代表目标信息,在进行信息匹配时,使用这些特征项评价未知文本与目标样本的相关程度。特征词条及其权值的选取称为目标样本的特征提取,特征提取算法的优劣将直接影响到系统的运行效果。

设D为一个包含m个文档的文档集合Di为第i个文档的特征向量,则有D={D1,D2,…,Dm}, Di=(di1di2…dij),i=12,…,m j=1,2,…,n。其中dij(i=1,2,…,m; j=1,2,…,n)为文档Di中第j个词条tj的权值它一般被定义为tj在Di中出现的频率tij的函数,例如采用TF-IDF函数,即dij=tij*log(N/nj)。其中N是文档数据库中文档总数,nj是文档数据库含有词条tj的文档数目。假设用户给定的文档向量为D2,未知的文档向量为q,两者的相似程度可用两向量的夹角余弦来度量,夹角越小说明相似度越高。相似度的计算公式如下

图 2 向量空间模型

通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。

2.2 中文分词技术

在使用向量模型表示文档时,首先要对文档进行词汇化处理。对于英语或者法语等语言来说,将文档转化成词的集合比较简单,但是对于汉语来说,不像英文文本的单词那样有空格来区分,这个处理过程要依赖于分词技术。从简单的查词典的方法,到后来的基于统计语言模型的分词方法,中文分词的技术已趋于成熟。但是,尽管现在分词软件的准确率已经比较高了,它对专业术语(称为未登录词识别)的识别率还不是很好。例如“来自星星的你”,分词可以成功切分为“来自\星星\的\你”,但是怎样把“来自星星的你”作为一个完整的专有名词(电视剧名称)识别出来,还有很多技术要解决。为了进一步提高关键词抽取的准确率,通常需要在词库中添加专名词表来保证分词的质量。

在完成分词之后,我们对词语的位置信息做进一步的发掘,需要确定记录位置信息的方式以及各个位置的词在反映主题时的相对重要性。标题、摘要和结论、正文等文章各个部分的位置权重是各不相同的,当软件逐词扫描统计词频时,记录每个词的位置信息。

在计算文档的特征向量的值时,还需要对文本集进行一些处理,过滤掉无用的信息。滤除这些没有作用的词语可以减少文本特征向量的维数,减少不必要的运算。常见做法包括:

  • 去掉一些低频词,比如某些单词只在一两个文本中出现过,这样词留在集合中会导致大部分文本样本的该属性值为0。
  • 去掉停止词,一般这种词几乎不携带任何信息。例如:“的”、“地”、“得”之类的助词,以及像“然而”、“因此”等只能反映句子语法结构的词语,它们不但不能反映文献的主题,而且还会对关键词的抽取造成干扰,有必要将其滤除。应该去掉的停止词为所有虚词以及标点符号。
  • 去掉一些标记信息,这主要针对网页文本或其他的标记语言文本。

(二):特征抽取

1.文本特征抽取

目前大多数中文文本分类系统都采用词作为特征项,作为特征项的词称作特征词。这些特征词作为文档的中间表示形式,用来实现文档与文档、文档与用户目标之间的相似度计算 。如果把所有的词都作为特征项,那么特征向量的维数将过于巨大,会对分类系统的运算性能造成极大的压力。在这样的情况下,要完成文本分类几乎是不可能的。寻求一种有效的特征降维方法,不仅能降低运算复杂度,还能提高分类的效率和精度,是文本自动分类中一项重要技术。

特征抽取的主要功能就是在不损伤核心信息的情况下降低向量空间维数,简化计算,提高文本处理的速度和效率。相对于其他分类问题,文本特征抽取的方式常见的有4种:

  • 用映射或变换的方法把原始特征变换为较少的新特征;
  • 从原始特征中挑选出一些最具代表性的特征;
  • 根据专家的知识挑选最有影响的特征;
  • 基于数学方法进行选取,找出最具分类信息的特征。

其中基于数学方法进行特征选择比较精确,人为因素干扰少,尤其适合于文本应用。这种方法通过构造评估函数,对特征集合中的每个特征进行评估,并对每个特征打分,这样每个词语都获得一个评估值,又称为权值,然后将所有特征按权值大小排序,提取预定数目的最优特征作为提取结果的特征子集。

2.评估函数

对用数学方法进行特征选择的算法,决定文本特征提取效果的主要因素是评估函数的质量,常用评估函数包括:

(1) TF-IDF

单词权重最为有效的实现方法就是TF-IDF它是由Salton在1988 年提出的。其中TF 称为词频, 用于计算该词描述文档内容的能力 IDF 称为反文档频率, 用于计算该词区分文档的能力。TF*IDF 的指导思想建立在这样一条基本假设之上 在一个文本中出现很多次的单词 在另一个同类文本中出现次数也会很多反之亦然。所以如果特征空间坐标系取TF 词频作为测度 就可以体现同类文本的特点。另外还要考虑单词区别不同类别的能力 TF*IDF 法认为一个单词出现的文本频率越小 它区别不同类别的能力就越大 所以引入了逆文本频度IDF 的概念以TF 和IDF 的乘积作为特征空间坐标系的取值测度。TF-IDF 法是以特征词在文档d中出现的次数与包含该特征词的文档数之比作为该词的权重,即其中, Wi表示第i个特征词的权重,TFi(t,d)表示词t在文档d中的出现频率,N表示总的文档数,DF(t)表示包含t的文档数。用TF-IDF算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。将所有词的权值排序, 根据需要可以有两种选择方式:

  • 选择权值最大的某一固定数n个关键词
  • 选择权值大于某一阈值的关键词

达观数据的实践经验是,计算机选择的关键词数量在10∽15个,人工选择的关键词数量在4∽6个比较合适, 通常具有最好的覆盖度和专指度。TFIDF算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取TF词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TFIDF法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TF和IDF的乘积作为特征空间坐标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上IDF是一种试图抑制噪音的加权 ,并且单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TF*IDF法的精度并不是很高。此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。

(2) 词频法

词频是一个词在文档中出现的次数。通过词频进行特征选择就是将词频小于某一阈值的词删除,从而降低特征空间的维数。这个方法是基于这样一个假设,即出现频率小的词对过滤的影响也较小。但是在信息检索的研究中认为,有时频率小的词含有更多的信息。因此,在特征选择的过程中不宜简单地根据词频大幅度删词。

(3) 文档频次法

文档频数(Document Frequency, DF)是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。在训练文本集中对每个特征计一算它的文档频次,并且根据预先设定的阑值去除那些文档频次特别低和特别高的特征。文档频次通过在训练文档数量中计算线性近似复杂度来衡量巨大的文档集,计算复杂度较低,能够适用于任何语料,因此是特征降维的常用方法。在训练文本集中对每个特征计算它的文档频数,若该项的DF 值小于某个阈值则将其删除,若其DF 值大于某个阈值也将其去掉。因为他们分别代表了“没有代表性”和“没有区分度”两种极端的情况。DF 特征选取使稀有词要么不含有用信息,要么太少而不足以对分类产生影响,要么是噪音,所以可删去。DF 的优点在于计算量小, 速度快,它的时间复杂度和文本数量成线性关系,所以非常适合于超大规模文本数据集的特征选择。不仅如此,文档频数还非常地高效,在有监督的特征选择应用中当删除90%单词的时候其性能与信息增益和x2 统计的性能还不相上下。但如果某一稀有词条主要出现在某类训练集中,却能很好地反映类别的特征,而因低于某个设定的阈值而滤除掉,包含着重要的判断信息被舍弃,这样就会对分类精度有一定的影响。

(4) 互信息方法

互信息(Mutual Information)衡量的是某个词和类别之间的统计独立关系,某个词t和某个类别Ci传统的互信息定义如下:互信息是计算语言学模型分析的常用方法,它度量两个对象之间的相互性。在过滤问题中用于度量特征对于主题的区分度。

互信息的定义与交叉嫡近似。互信息本来是信息论中的一个概念,用于表示信息之间的关系, 是两个随机变量统计相关性的测度,使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率比较低的词条与该类的互信息比较大。通常用互信息作为特征词和类别之问的测度,如果特征词属于该类的话,它们的互信息量最大。由于该方法不需要对特征词和类别之间关系的性质作任何假设,因此非常适合于文本分类的特征和类别的配准工作。特征项和类别的互信息体现了特征项与类别的相关程度, 是一种广泛用于建立词关联统计模型的标准。

互信息与期望交叉熵的不同在于没有考虑特征出现的频率, 这样导致互信息评估函数不选择高频的有用词而有可能选择稀有词作为文本的最佳特征。因为对于每一主题来讲,特征t的互信息越大,说明它与该主题的共现概率越大,因此,以互信息作为提取特征的评价时应选互信息最大的若干个特征。互信息计算的时间复杂度类似于信息增益, 互信息的平均值就是信息增益。互信息的不足之处在于得分非常受词条边缘概率的影响。达观的实验数据显示,互信息分类效果通常比较差,其次是文档频率、CC 统计,CHI 统计分类效果最好。

对互信息而言,提高分类精度的方法有:1) 可以增加特征空间的维数,以提取足够多的特征信息,这样就会带来了时间和空间上的额外开销; 2) 根据互信息函数的定义,认为这些低频词携带着较为强烈的类别信息,从而对它们有不同程度的倚重. 当训练语料库没有达到一定规模的时候,特征空间中必然会存在大量的出现文档频率很低(比如低于3 次) 的词条,他们较低的文档频率导致了他们必然只属于少数类别. 但是从抽取出来的特征词观察发现,大多数为生僻词,很少一部分确实带有较强的类别信息,多数词携带少量的类别信息,甚至是噪音词。

(5) 期望交叉熵(Expected Cross Entropy)

交叉嫡与信息量的定义近似,其公式为:交叉嫡 ,也称KL距离。它反映了文本主题类的概率分布和在出现了某特定词汇的条件下文本主题类的概率分布之间的距离,词汇w的交叉嫡越大,对文本主题类分布的影响也越大。它与信息增益唯一的不同之处在于没有考虑单词未发生的情况,只计算出现在文本中的特征项。如果特征项和类别强相关, P(Ci|w)就大,若P(Ci) 又很小的话,则说明该特征对分类的影响大。交叉熵反映了文本类别的概率分布和在出现了某个特定词的条件下文本类别的概率分布之间的距离, 特征词t 的交叉熵越大, 对文本类别分布的影响也越大。熵的特征选择效果都要优于信息增益。

(6) 二次信息熵(QEMI)

将二次熵函数应用于互信息评估方法中,取代互信息中的Shannon熵,就形成了基于二次熵的互信息评估函数。基于二次熵的互信息克服了互信息的随机性,是一个确定的量,因此可以作为信息的整体测度,另外它还比互信息最大化的计算复杂度要小,所以可以比较高效地用在基于分类的特征选取上。

(7) 信息增益方法(Information Gain)

信息增益方法是机器学习的常用方法,在过滤问题中用于度量已知一个特征是否出现于某主题相关文本中对于该主题预测有多少信息。通过计算信息增益可以得到那些在正例样本中出现频率高而在反例样本中出现频率低的特征,以及那些在反例样本中出现频率高而在正例样本中出现频率低的特征。信息增益G(w)的训算公式如下:其中P(w)是词w出现的概率,P(Ci)是取第i个目录时的概率,P(C, |w) 是假定w出现时取第i个目录的概率。

信息增益是一种基于熵的评估方法,涉及较多的数学理论和复杂的熵理论公式,定义为某特征项为整个分类所能提供的信息量,不考虑任何特征的熵与考虑该特征后的熵的差值。他根据训练数据,计算出各个特征项的信息增益,删除信息增益很小的项,其余的按照信息增益从大到小排序。信息增益是信息论中的一个重要概念, 它表示了某一个特征项的存在与否对类别预测的影响, 定义为考虑某一特征项在文本中出现前后的信息熵之差。某个特征项的信息增益值越大, 贡献越大, 对分类也越重要。信息增益方法的不足之处在于它考虑了特征未发生的情况。特别是在类分布和特征值分布高度不平衡的情况下, 绝大多数类都是负类, 绝大多数特征都不出现。此时的函数值由不出现的特征决定, 因此, 信息增益的效果就会大大降低。信息增益表现出的分类性能偏低。因为信息增益考虑了文本特征未发生的情况,虽然特征不出现的情况肿可能对文本类别具有贡献,但这种贡献往往小于考虑这种情况时对特征分值带来的干扰。

(8) 统计量方法

x2统计量用于度量特征w和主题类C之间的独立性。而表示除w以外的其他特征,C表示除C以外的其他主题类,那么特征w和主题类C的关系有以下四种情况: ,用A, B, C, D表示这四种情况的文档频次,总的文档数N=A+B+C+D,扩统计量的计算公式如下:当特征w和主题类C之间完全独立的时候,x2统计量为0。x2统计量和互信息的差别在于它是归一化的统计量,但是它对低频特征的区分效果也不好。X2 统计得分的计算有二次复杂度, 相似于互信息和信息增益。在 X2 统计和互信息之间主要的不同在于 X2 是规格化评价, 因而 X2 评估分值对在同类中的词是可比的, 但是 X2 统计对于低频词来说是不可靠的。

利用x2 统计方法来进行特征抽取是基于如下假设:在指定类别文本中出现频率高的词条与在其他类别文本中出现频率比较高的词条,对判定文档是否属于该类别都是很有帮助的.采用x2估计特征选择算法的准确率在实验中最高,其分类效果受训练集影响较小,比较稳定。而且在对文教类和政治类存在类别交叉现象的文本进行分类时,采用x2估计的分类系统表现出了优于其它方法的分类性能。X2估计的可靠性较好,便于对程序的控制,无需因训练集的改变而人为的调节特征阀值的大小。

(9) 文本证据权(The Weight of Evidence for Text)

文本证据权衡量类的概率和给定特征时类的条件概率之间的差别。

(10) 优势率(Odds Ratio)

优势率只适用于二元分类的情况,其特点是只关心文本特征对于目标类的分值。Pos表示目标类,neg表示非目标类。

(11) 遗传算法(Genetic Algorithm, GA):

遗传算法(Genetic Algorithm, GA)是一种通用型的优化搜索方法,它利用结构化的随机信息交换技术组合群体中各个结构中最好的生存因素,复制出最佳代码串,并使之一代一代地进化,最终获得满意的优化结果。

文本实际上可以看作是由众多的特征词条构成的多维空间,而特征向量的选择就是多维空间中的寻优过程,因此在文本特征提取研究中可以使用高效寻优算法。在将文本特征提取问题转化为文本空间的寻优过程中,首先对Web文本空间进行遗传编码,以文本向量构成染色体,通过选择、交叉、变异等遗传操作,不断搜索问题域空间,使其不断得到进化,逐步得到Web文本的最优特征向量。 基于协同演化的遗传算法不是使用固定的环境来评价个体,而是使用其他的个体来评价特定个体。基于协同演化的遗传算法不仅能反映其母体的特征,还能反映其他同类文本的共性,这样可以有效地解决同一主题众多文本的集体特征向量的提取问题,获得反映整个文本集合某些特征的最佳个体。

(12) 主成分分析法(Principal Component Analysis,PCA)

PCA是非常常用的一种通用特征降维方法,也同样大规模用于文本特征抽取中,基于其处理方式的不同又分为数据方法和矩阵方法

矩阵方法中,所有的数据通过计算方差一协方差结构在矩阵中表示出来,矩阵的实现目标是确定协方差矩阵的特征向量,它们和原始数据的主要成分相对应。在主成分方法中,由于矩阵方法的复杂度在n很大的情况 以二次方增长,因此人们又开发了主要使用Hebbian学习规则的PCA神经网络方法。主成分分析法是特征选取常用的方法之一,它能够揭示更多有关变量_丰要方向的信息。但它的问题在于矩阵方法中要使用奇异值分解对角化矩阵求解方差一协方差。

(13) 模拟退火算法(Simulating Anneal,SA)

特征选取可以看成是一个组合优化问题,因而可以使用解决优化问题的方法来解决特征选取的问题。模拟退火算法(Simulating Anneal,SA)就是其中一种方法。模拟退火算法是一个很好的解决优化问题的方法,将这个方法运用到特征选取中,理论上能够找到全局最优解,但在初始温度的选取和邻域的选取t要恰当,必须要找到一个比较折中的办法,综合考虑解的性能和算法的速度。

(14) N—Gram算法

它的基本思想是将文本内容按字节流进行大小为N的滑动窗口操作,形成长度为N的字节片段序列。每个字节片段称为gram,对全部gram的出现频度进行统计,并按照事先设定的阈值进行过滤,形成关键gram列表,即为该文本的特征向量空间,每一种gram则为特征向量维度。

由于N—Gram算法可以避免中文分词的障碍,所以对中文分类有较高的实用性。中文文本处理大多采用双字节进行分解,称之为bi-gram。但是bigram切分方法在处理20%左右的中文多字词时,往往产生语义和语序方面的偏差。而对于专业研究领域,多字词常常是文本的核心特征,处理错误会导致较大的负面影响。基于N—Gram改进的文本特征提取算法,在进行bigram切分时,不仅统计gram的出现频度,而且还统计某个gram与其前邻gram的情况,并将其记录在gram关联矩阵中。对于那些连续出现频率大于事先设定阈值的,就将其合并成为多字特征词。这样通过统计与合并双字特征词,自动产生多字特征词,可以较好地弥补N—Gram算法在处理多字词方面的缺陷。

3. 评估函数对比分析

上述罗列的几种文档特征评估函数的特点如何呢?信息增益的定义过于复杂,因此应用较多的是交叉嫡和互信息。其中互信息的效果要好于交叉嫡,这是因为互信息是对不同的主题类分别抽取特征词,而交叉嫡跟特征在全部主题类内的分布有关,是对全部主题类来抽取特征词。这些方法,在英文特征提取方面都有各自的优势,但用于中文文本,并没有很高的效率。主要有2个方面的原因:

  • 特征提取的计算量太大,特征提取效率太低,而特征提取的效率直接影响到整个文本分类系统的效率;
  • 经过特征提取后生成的特征向量维数太高,而且不能直接计算出特征向量中各个特征词的权重。

目前使用评估函数进行特征选取越来越普遍,特征选取算法通过构造一个评估函数的方法,选取预定数目的最佳特征作为特征子集的结果。在几种评估方法中,每一种方法都有一个选词标准,遵从这个标准,从文本集的所有词汇中选取出有某个限定范围的特征词集。因为评估函数的构造不是特别复杂,适用范围又很广泛,所以越来越多的人们喜欢使用构造评估函数来进行特征的选取,这些评估函数在Web文本挖掘中被广泛使用,特征选择精度普遍达到70%~80%,但也各自存在缺点和不足。例如,“信息增益”考虑了单词未发生的情况,对判断文本类别贡献不大,而且引入不必要的干扰,特别是在处理类分布和特征值分布高度不平衡的数据时选择精度下降。“期望交叉熵”与“信息增益”的唯一不同就是没有考虑单词未发生的情况,因此不论处理哪种数据集,它的特征选择精度都优于“信息增益”。与“期望交叉熵”相比,“互信息”没有考虑单词发生的频度,这是一个很大的缺点,造成“互信息”评估函数经常倾向于选择稀有单词。“文本证据权”是一种构造比较新颖的评估函数,它衡量一般类的概率和给定特征类的条件概率之间的差别,这样在文本处理中,就不需要计算W的所有可能值,而仅考虑W在文本中出现的情况。“优势率”不像前面所述的其他评估函数将所有类同等对待,它只关心目标类值,所以特别适用于二元分类器,可以尽可能多地识别正类,而不关心识别出负类。从考虑文本类间相关性的角度,可以把常用的评估函数分为两类,即类间不相关的和类间相关的

“文档频数”(DF)是典型的类间不相关评估函数, DF的排序标准是依据特征词在文档中出现篇数的百分比,或称为篇章覆盖率。这种类型的评估函数,为了提高区分度,要尽量寻找篇章覆盖率较高的特征词,但又要避免选择在各类文本中都多次出现的无意义高频词,因此类间不相关评估函数对停用词表的要求很高。但是很难建立适用于多个类的停用词表,停用词不能选择太多,也不能选择太少,否则都将会影响特征词的选择。同时,类间不相关评估函数还存在一个明显的缺点,就是对于特征词有交叉的类别或特征相近的类别,选择的特征词会出现很多相似或相同的词条,造成在特定类别间的区分度下降。类间相关的评估函数,例如期望交叉熵、互信息、文本证据权等,综合考虑了词条在已定义的所有类别中的出现情况,可以通过调整特征词的权重,选择出区分度更好的特征,在一定程度上提高了相近类别的区分度。但是,该区分度的提高仅体现在已定义的类别间,而对于尚未定义的域外类别,类间相关评估函数的选择效果也不理想。因此,在评估函数选择问题上,提高对域外类别文本的区分度是十分重要的研究课题。

传统的特征选择方法大多采用以上各评估函数进行特征权重的计算,由于这些评估函数是基于统计学的,其中一个主要缺陷就是需要用一个很庞大的训练集才能获得几乎所有的对分类起关键作用的特征.这需要消耗大量的时间和空间资源,况且,构建这样一个庞大的训练集也是一项十分艰巨的工作。然而,在现实应用中,考虑到工作效率,不会也没有足够的资源去构建一个庞大的训练集,这样的结果就是:被选中的甚至是权重比较高的特征,可能对分类没有什么用处,反而会干涉到正确的分类;而真正有用的特征却因为出现的频率低而获得较低的权重,甚至在降低特征空间维数的时候被删除掉了。基于评估函数的特征提取方法是建立在特征独立的假设基础上,但在实际中这个假设是很难成立的,因此需要考虑特征相关条件下的文本特征提取方法。

4. 词向量的应用

特征选择也可以通过用映射或变换的方法把原始特征变换为较少的新特征。上面提到的特征选择模块,在实际情况会碰到这样的问题:无论是采用文档频率、信息增益法、互信息法等得降维方法,都会损失了部分的文档信息。以文档频率为例,在特征选择过程中由于某些关键的词语低于了人为设定的阈值,所以会被直接忽视掉,而很多情况这部分词汇能包含较多的信息,对于分类的重要性比较大。怎么能够进一步理解这部分的信息,是急需要解决的问题。一个想法是找到这些使用频率比较低的词语相似的高频词,譬如在讨论“月亮”的古诗词中,包含了很多低频的同义词,如“玉兔”,“婵娟”等,如果我们能把这些低频的词语合并到一个维度,无疑是能够增强分类系统对文档的理解深度的。词向量这一概念能够有效地表示词语之间的相似性,适用于这种方法。

先介绍一下词向量的定义。一种最简单的词向量是one-hot representation,就是用一个很长的向量来表示一个词,向量的长度是词典D的大小N,向量的分量只有一个为1,其他全为0,1的位置对应该词在词典中的索引。这种词向量表示有一些缺点:容易受维数灾难的困扰。另一种词向量是Distributed Representation,它最早是Hinton于1986年提出来的,可以克服one-hot representation的上述缺点。其基本想法是:通过训练将某种语言中的每个词映射成一个固定长度的短向量。所有这些向量构成一个词向量空间,每个向量是该空间中的一个点,在这个空间上引入距离,就可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性了。如何获取Distributed Representation的词向量呢?有很多不同的模型可以用来估计词向量,包括有名的LSA、LDA和神经网络算法。Word2Vec就是使用度比较广的一个神经网络算法实现的词向量计算工具。

现在介绍词向量在分类系统上的具体实践。Word2Vec能够将词映射成一个固定长度的短向量,所以生成了文档集合词语的向量表示。由于向量的距离代表了词语之间的相似性,我们可以通过聚类的方法(譬如K-Means)把相似的词语合并到一个维度,重新计算该维度的特征向量权值。相比于原来的方法,使用词向量能在一定程度保留了文档的信息。此外,Word2Vec作为无监督学习方法的一个实现,能够允许它从无标注的文本进行训练,能进一步提升系统的性能。

另外,基于向量空间模型的文本分类方法是没有考虑到词的顺序的。基于卷积神经网络(CNN)来做文本分类,可以利用到词的顺序包含的信息。CNN模型把原始文本作为输入,不需要太多的人工特征。下图是CNN模型的一个实现,共分四层,第一层是词向量层,doc中的每个词,都将其映射到词向量空间,假设词向量为k维,则n个词映射后,相当于生成一张n*k维的图像;第二层是卷积层,多个滤波器作用于词向量层,不同滤波器生成不同的feature map;第三层是pooling层,取每个feature map的最大值,这样操作可以处理变长文档,因为第三层输出只依赖于滤波器的个数;第四层是一个全连接的softmax层,输出是每个类目的概率。除此之外,输入层可以有两个channel,其中一个channel采用预先利用word2vec训练好的词向量,另一个channel的词向量可以通过backpropagation在训练过程中调整。

图 3 基于卷积神经网络的文本分类算法

作者简介:张健,复旦大学计算机软件与理论硕士,现任达观数据联合创始人,曾在盛大创新院负责相关推荐模块,在盛大文学数据中心负责任务调度平台系统和集群维护管理,数据平台维护管理和开发智能审核系统。 对大数据技术、机器学习算法有较深入的理解和实践经验。

本文为第二部分,着重介绍特征向量权重的影响因素以及样本训练和分类评估方法。

随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的一类。首先来回顾一下上一篇所提到的文本分类的流程,如图 1所示,包括训练、特征抽取、训练模型、分类预测等几个主要环节。

图 1 文本分类流程图

(一):特征向量权重的影响因素

特征权重用于衡量某个特征项在文档表示中的重要程度或区分能力的强弱。选择合适的权重计算方法,对文本分类系统的分类效果能有较大的提升作用。影响特征词权值的因素包括以下几点:

1. 词频和文档频度

词频和文档频度,是特征项最重要的影响因素。文本内中的中频词往往具有代表性,高频词区分能力较小,而低频词或者示出现词也常常可以做为关键特征词。而对于文档频度这一角度,出现文档多的特征词,分类区分能力较差,出现文档少的特征词更能代表文本的不同主题。结合词频和文档频度来评估特征的重要性有较强的区分能力,它们在不同方法中有不同的应用公式,这些方法包括:绝对词频(TF)、倒排文档频度(IDF)、TF-IDF、TFC、ITC、TF-IWF,如下:

  • 绝对词频(TF):直接使用特征项在文本中出现的频度;
  • 倒排文档频度(IDF):稀有特征比常用特征含有更新的信息;
  • TF-IDF: 权重与特征项在文档中出现的频率成正比,与在整个语料中出现该特征项的文档书成反比;
  • TFC:对文本长度进行归一化处理后的TF-IDF;
  • ITC:在TFC基础上,用tf的对数值代替tf值;
  • TF-IWF:在TF-IDF算法的基础上,用特征项频率倒数的对数值IWF代替IDF,并且用IWF的平方平衡权重值对于特征项频率的倚重。

2. 词性

汉语言中,能标识文本特性的往往是文本中的实词,如名词、动词、形容词等。而文本中的一些虚词,如感叹词、介词、连词等,对于标识文本的类别特性并没有贡献,也就是对确定文本类别没有意义的词。如果把这些对文本分类没有意思的虚词作为文本特征词,将会带来很大噪音,从而直接降低文本分类的效率和准确率。因此,在提取文本特征时,应首先考虑剔除这些对文本分类没有用处的虚词,而在实词中,又以名词和动词对于文本的类别特性的表现力最强,所以可以只提取文本中的名词和动词作为文本的一级特征词。

3. 标题

标题是作者给出的提示文章内容的短语,特别在新闻领域,新闻报道的标题一般都要求要简练、醒目,有不少缩略语,与报道的主要内容有着重要的联系,对摘要内容的影响不可忽视。统计分析表明,小标题的识别有助于准确地把握文章的主题。主要体现在两个方面:正确识别小标题可以很好地把握文章的整体框架,理清文章的结构层次;同时,小标题本身是文章中心内容的高度概括。因此,小标题的正确识别能在一定程度上提高文摘的质量。

4. 位置

美国的EE.Baxendale的调查结果显示:段落的论题是段落首句的概率为85%,是段落末句的概率为7%。而且新闻报道性文章的形式特征决定了第一段一般是揭示文章主要内容的。因此,有必要提高处于特殊位置的句子权重,特别是报道的首旬和末句。但是这种现象又不是绝对的,所以,我们不能认为首句和末句就一定是所要摘要的内容,因此可以考虑一个折衷的办法,即首句和末句的权重上可通过统计数字扩大一个常数倍。首段、末段、段首、段尾、标题和副标题、子标题等处的句子往往在较大程度上概述了文章的内容。对于出现在这些位置的句子应该加大权重。Internet上的文本信息大多是HTML结构的,对于处于Web文本结构中不同位置的单词,其相应的表示文本内容或区别文本类别的能力是不同的,所以在单词权值中应该体现出该词的位置信息。

5. 句法结构

句式与句子的重要性之间存在着某种联系,比如摘要中的句子大多是陈述句,而疑问句、感叹句等则不具内容代表性。而通常“总之”、“综上所述”等一些概括性语义后的句子,包含了文本的中心内容。

6. 专业词库

通用词库包含了大量不会成为特征项的常用词汇,为了提高系统运行效率,系统根据挖掘目标建立专业的分词表,这样可以在保证特征提取准确性的前提下,显著提高系统的运行效率。用户并不在乎具体的哪一个词出现得多,而在乎泛化的哪一类词出现得多。真正起决定作用的是某一类词出现的总频率。基于这一原理,我们可以先将词通过一些方法依主题领域划分为多个类,然后为文本提取各个词类的词频特征,以完成对文本的分类。可以通过人工确定领域内的关键词集。

7. 信息熵

熵(Entropy)在信息论中是一个非常重要的概念,它是不确定性的一种度量。信息熵方法的基本目的是找出某种符号系统的信息量和多余度之间的关系,以便能用最小的成本和消耗来实现最高效率的数据储存、管理和传递。我们将可以将信息论中的熵原理引入到特征词权重的计算中。

8. 文档、词语长度

一般情况下,词的长度越短,其语义越泛。一般来说,中文中词长较长的词往往反映比较具体、下位的概念,而短的词常常表示相对抽象、上位的概念一般说来,短词具有较高的频率和更多的含义,是面向功能的;而长词的频率较低,是面向内容的,增加长词的权重,有利于词汇进行分割,从而更准确地反映出特征词在文章中的重要程度。词语长度通常不被研究者重视,但是本文在实际应用中发现,关键词通常是一些专业学术组合词汇,长度较一般词汇长。考虑候选词的长度,会突出长词的作用。长度项也可以使用对数函数来平滑词汇间长度的剧烈差异。通常来说,长词汇含义更明确,更能反映文本主题,适合作为关键词,因此将包含在长词汇中低于一定过滤阈值的短词汇进行了过滤。所谓过滤阈值,就是指进行过滤短词汇的后处理时,短词汇的权重和长词汇的权重的比的最大值。如果低于过滤阈值,则过滤短词汇,否则保留短词汇。根据统计,二字词汇多是常用词,不适合作为关键词,因此对实际得到的二字关键词可以做出限制。比如,抽取5个关键词,本文最多允许3个二字关键词存在。这样的后处理无疑会降低关键词抽取的准确度和召回率,但是同候选词长度项的运用一样,人工评价效果将会提高。

9. 词语间关联

词汇间的关联关系对提升文本理解的深度有非常重要的影响,例如中文中存在大量的同义词,近义词,中文简称,指代等。在前文中计算词频、出现位置时,如果没有很好的考虑词语间关联,则很容易错误的识别文章的核心关键词,影响文本分类精度。

10. 单词的区分能力

在TF*IDF公式的基础上,又扩展了一项单词的类区分能力。新扩展的项用于描述单词与各个类别之间的相关程度。

11. 词语直径(Diameter(t))

词语直径是指词语在文本中首次出现的位置和末次出现的位置之间的距离。词语直径是根据实践提出的一种统计特征。根据经验,如果某个词汇在文本开头处提到,结尾又提到,那么它对该文本来说,是个很重要的词汇。不过统计结果显示,关键词的直径分布出现了两极分化的趋势,在文本中仅仅出现了1 次的关键词占全部关键词的14.184%。 所以词语直径是比较粗糙的度量特征。

12. 首次出现位置(FirstLoc(t))

Frank在Kea算法中使用候选词首次出现位置作为Bayes概率计算的一个主要特征,他称之为距离(Distance)。简单的统计可以发现,关键词一般在文章中较早出现,因此出现位置靠前的候选词应该加大权重。实验数据表明,首次出现位置和词语直径两个特征只选择一个使用就可以了。由于文献数据加工问题导致中国学术期刊全文数据库的全文数据不仅包含文章本身,还包含了作者、作者机构以及引文信息,针对这个特点,使用首次出现位置这个特征,可以尽可能减少全文数据的附加信息造成的不良影响。

13. 词语分布偏差(Deviation(t))

词语分布偏差所考虑的是词语在文章中的统计分布。在整篇文章中分布均匀的词语通常是重要的词汇。词语的分布偏差计算公式如下: 其中,CurLoc(tj)是词汇t在文章中第j次出现的位置; MeanLoc(t)是词汇t在文章中出现的平均位置。

特征权重计算方法没有最好的选择,往往要依据现实的具体场景来选取适合的方法。在进行特征权重的计算之后,已经可以把测试集数据采用机器学习方法进行分类训练。但是实际操作会遇到一些问题。单词并不都包含相同的信息。如果在一部分文件中有些单词频繁地出现,那将扰乱分类系统的分析。我们想要对每一个词频向量进行比例缩放,使其变得更具有代表性。换句话说,我们需要进行向量标准化,譬如标准化向量使其L2范数为1。某种程度上,我们得到了一个在该词的信息价值上衰减的结果。所以我们需要按比例缩小那些在一篇文档中频繁出现的单词的值 。

(二):样本训练和分类评估方法

1.样本训练

1.1 文本分类算法

由于文本分类本身是一个分类问题,所以一般的模式分类方法都可以用于文本分类应用中。常用的分类算法包括:

(1) Rocchio分类器

Rocchio分类器的基本思想是,首先为每一个训练文本C建立一个特征向量,然后使用训练文本的特征向量为每个类建立一个原型向量(类向量)。当给定一个待分类文本时,计算待分类文本与各个类别的原型向量之间的距离,然后根据计算出来的距离值决定待分类文本属于哪一类别。一个基本的实现方法就是把一个类别里的样本文档各项取个平均值,作为原型变量。

(2) 朴素贝叶斯分类器

利用特征项和类别的列和概率来估计给定文档的类别概率。假设文本是基于词的一元模型,即文本中当前词的出现依赖于文本类别,但不依赖于其他词及文本的长度,也就是说,词与词之间是独立的。根据贝叶斯公式,文档Doc属于Ci类别的概率为P(Ci|Doc)=P(Doc|Ci)*P(Ci)/P(Doc)。

(3) 基于支持向量机的分类器

基于支持向量机(SVM)的分类方法主要用于解决二元模式分类问题。SVM的基本思想是在向量空间中找到一个决策平面,这个平面能够“最好”地分割两个分类中的数据点。支持向量机分类法就是要在训练集中找到具有最大类间界限的决策平面,如图2。

图 2 基于支持向量机分类器原理图

(4) k-最近邻法

k-最近邻方法的基本思想是:给定一个测试文档,系统在训练集中查找离它最近的k个邻近文档,并且根据这些邻近文档的分类来给该文档的候选类别评分。把邻近文档和测试文档的相似度作为邻近文档所在类别的权重,如果这k个邻近文档中的部分文档属于同一个类别,那么将该类别中每个邻近文档的权重求和,并作为该类别和测试文档的相似度。然后,通过对候选分类评分的排序,给出一个阈值。

(5) 基于神经网络的分类器

神经网络是人工智能中比较成熟的技术之一,基于该技术的分类器的基本思想是:给每一类文档建立一个神经网络,输入通常是单词或者更加复杂的特征向量,通过机器学习方法获得从输入到分类的非线性映射。

(6) 决策树

决策树分类器把文本处理过程看作是一个等级分层分解完成的复杂任务。如图3,决策树是一棵树,树的根节点是整个数据集合空间,每个分结点是对一个单一变量的测试,该测试将数据集合空间分割成两个或更多个类别,即决策树可以是二叉树也可以是多叉树。每个叶结点是属于单一类别的记录。构造决策树分类器时,首先要通过训练生成决策树,然后再通过测试集对决策树进行修剪。一般可通过递归分割的过程构建决策树,其生成过程通常是自上而下的,选择分割的方法有很多种,但是目标都是一致的,就是对目标文档进行最佳分割。

图 3 决策树实例

1.2 Ensemble方法

我们使用上述的经典分类算法的过程中,很自然的想到一点,我们是否能够整合多个算法优势到解决某一个特定分类问题中去?答案是肯定的。通过聚合多个分类器的预测来提高分类的准确率。这种技术称为Ensemble方法。Ensemble方法是提升机器学习精度的有效手段。它的基本思想,充分利用不同分类器的优势,取长补短,最后综合多个分类器的结果。Ensemble可以设定一个目标函数(组合多个分类器),通过训练得到多个分类器的组合参数(而不是简单的累加或者多数)。 在Ensemble框架下将分类器分为两个Level: L1层和L2层。L1层是基础分类器,前面提到的分类器均可以作为L1层分类器来使用;L2层基于L1层,将L1层的分类结果形成特征向量,再组合一些其他的特征后,形成L2层分类器(如SVM,AdaBoost等)的输入。这里需要特别留意的是用于L2层的训练的样本必须没有在训练L1层时使用过。

图 4 Ensemble框架

2.文本分类评估

针对不同的目的,多种文本分类器性能评价方法被提出,包括召回率、正确率和F-测度值。设定a表示分类器将输入文本正确分类到某个类别的个数;b表示分类器将输入文本错误分类到某个类别的个数;c表示分类器将输入文本错误地排除在某个类别之外的个数;d表示分类器将输入文本正确地排除在某个类别之外的个数。

该分类器的召回率、正确率和F-测度值分别采用以下公式计算:

召回率 r = a / (a + c) * 100%
正确率 p = a / (a + b) * 100%
F-测度值 F = (2 * p * r) /(p + r)

由于在分类结果中,对应每个类别都会有一个召回率和正确率,因此,可以根据每个类别的分类结果评价分类器的整体性能,通常方法有两种:微平均和宏平均。微平均是根据正确率和召回率计算公式直接计算出总得正确率和召回率值。宏平均是指首先计算出每个类别的正确率和召回率,然后对正确率和召回率分别取平均得到总的正确率和召回率。不难看出,宏平均平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。

结语

如今我们正处在一个信息爆炸的时代,如何在这样一个巨大的信息海洋中更加有效的发现和使用信息以及如何利用这个信息宝库为人们提供更高质量和智能化的信息服务,是值得探讨的问题。自动文本分类技术作为处理和组织大量文本数据的关键技术,已经成为关注焦点,具有广泛的应用场景。达观数据科技非常愿意与所有企业分享我们的经验和能力,助力各个企业享受大数据技术的成果。

作者简介:张健,复旦大学计算机软件与理论硕士,现任达观数据联合创始人,曾在盛大创新院负责相关推荐模块,在盛大文学数据中心负责任务调度平台系统和集群维护管理,数据平台维护管理和开发智能审核系统。对大数据技术、机器学习算法有较深入的理解和实践经验。

转载于:https://www.cnblogs.com/DjangoBlog/p/6341427.html

文本数据的机器学习自动分类方法(转)相关推荐

  1. 文本数据的机器学习自动分类方法

    来源:http://blog.csdn.net/jdbc/article/details/50586042 本文为第一部分,着重介绍文本预处理以及特征抽取的方法. 随着互联网技术的迅速发展与普及,如何 ...

  2. 达观数据:文本大数据的机器学习自动分类方法

    随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类.组织和管理,已经成为一个具有重要用途的研究课题.而在这些数据中,文本数据又是数量最大的一类.文本分类是指在给定分类体系下,根据文本内容自动 ...

  3. 关于文本数据预处理的一些方法

    最近在进行一个关于深度学习的文本情感分类的项目,从数据获取到清洗,以及文本标注这些都在准备.文本预处理是NLP中十分关键的一个流程,正所谓数据是否优质决定着神经网络的训练效果,以及后续对神经网络的调参 ...

  4. 读取txt文本数据,用区域生长方法分割求平面

    代码如下.有几处特殊说明再代码中注明了. 读取的txt文本就是3D点云数据.形式如下: 0.1, 0.3, 0.9 1.0 , 1.3 ,  1.1 0.3, 0.4, 0.6 上面的数据计算由LSD ...

  5. Pytorch 文本数据分析方法(标签数量分布、句子长度分布、词频统计、关键词词云)、文本特征处理(n-gram特征、文本长度规范)、文本数据增强(回译数据增强法)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本数据分析 学习目标: 了解文本数据分析的作用. 掌握常用的 ...

  6. 文本数据增强一(概述、中文、同义句生成、enhance、augment、text、nlp)

    文本数据增强(扩充增加.中文.同义句生成.enhance.augment.text.nlp) AugmentText 概述 - 相较于图像数据增强,文本数据增强,现在还是有很多问题的: - 往更严格的 ...

  7. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  8. 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处

    新闻上的文本分类:机器学习大乱斗 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处理过程与结果差 ...

  9. 人机交互系统(3.1)——NLP文本数据增强方法

    一.数据增强的背景和应用场景 随着AI技术的逐步发展,更好的神经网络模型对数据规模的要求也逐步提升.而在分类任务中,若不同类别数据量相差很大,模型则会出现过拟合现象,严重影响预测的正确性. 从广义上来 ...

  10. MATLAB读取写入文本数据最佳方法 | Best Method for Loading Saving Text Data Using MATLAB

    MATLAB读取文件有很多方法.然而笔者在过去进行数据处理中,由于函数太多,相互混杂,与C#,Python等语言相比,反而认为读取文本数据比较麻烦.C#和Python等高级语言中,对于大部分的文本数据 ...

最新文章

  1. 周末都花费在智能车实验室,结果......
  2. NYOJ 298 点的变换(矩阵快速幂)
  3. 《c语言从入门到精通》看书笔记——第2章 算法
  4. java疯狂讲义内存分配_java疯狂讲义学习:面向对象(上)
  5. api网关和esb区别_具有ESB,API管理和Now .. Service Mesh的应用程序网络功能。
  6. VMware10出现VMware Workstation 不可恢复错误: (vmx)
  7. tensorrt轻松部署高性能dnn推理_NVIDIA TensorRT高性能深度学习推理
  8. 29 条运维工程师必会实用 Linux 命令
  9. URL地址相对路径转绝对路径
  10. 232转485通讯测试软件,(DIY制作)多功能调试工具——实现USB转:485/232/NRF24L01等(原理图和程序)...
  11. 软件体系结构风格---基于事件的隐式调用
  12. 不用if比较两个数大小
  13. cocos creator pc web端 全屏
  14. android 黑白屏问题
  15. 解决tomcat在pycharm中的初始化报错“ Failed to transfer file”“could not create folder”“(Permission denied)”
  16. MATLAB如何固定text在图中的相对位置
  17. 海思HI3516移植使用AP6181 BCM43362
  18. 入坑 c计划 day 1
  19. apache服务构建虚拟web主机
  20. 用Python 生成个性二维码

热门文章

  1. html标点符号在首页,HTML常用的特殊符号前端使用的标点符号
  2. tomcat启动失败:Failed creating java jvm.dll
  3. 多个category实现同一个方法调用的顺序
  4. Python中._pth文件的作用
  5. 什么app可以绘制路线图_为什么大多数路线图都会不可避免地带来糟糕的结果
  6. 基于PT2001 的4缸发动机 DFI 控制讲解3 - DCDC部分
  7. TIOBE 6 月编程语言排行榜:编程语言的长尾效应
  8. win7系统查看硬盘序列号步骤
  9. 讯飞语点,移动灵犀,搜狗语音助手对比测试
  10. 财报识别OCR,披露虚假财务报表