﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jasper's Java Jacal-随笔分类-文本分类技术</title><link>http://www.blogjava.net/zhenandaci/category/31868.html</link><description>嘉士伯的Java小屋</description><language>zh-cn</language><lastBuildDate>Sat, 31 May 2008 17:42:24 GMT</lastBuildDate><pubDate>Sat, 31 May 2008 17:42:24 GMT</pubDate><ttl>60</ttl><item><title>文本分类入门(三)统计学习方法</title><link>http://www.blogjava.net/zhenandaci/archive/2008/06/01/205100.html</link><dc:creator>Jasper</dc:creator><author>Jasper</author><pubDate>Sat, 31 May 2008 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/zhenandaci/archive/2008/06/01/205100.html</guid><wfw:comment>http://www.blogjava.net/zhenandaci/comments/205100.html</wfw:comment><comments>http://www.blogjava.net/zhenandaci/archive/2008/06/01/205100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenandaci/comments/commentRss/205100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenandaci/services/trackbacks/205100.html</trackback:ping><description><![CDATA[<p><span style="font-family: 微软雅黑"><span style="font-size: 12pt">前文说到使用统计学习方法进行文本分类就是让计算机自己来观察由人提供的训练文档集，自己总结出用于判别文档类别的规则和依据。理想的结果当然是让计算机在理解文章内容的基础上进行这样的分类，然而遗憾的是，我们所说的&#8220;理解&#8221;往往指的是文章的语义甚至是语用信息，这一类信息极其复杂，抽象，而且存在上下文相关性，对这类信息如何在计算机中表示都是尚未解决的问题（往大里说，这是一个&#8220;知识表示&#8221;的问题，完全可以另写一系列文章来说了），更不要说让计算机来理解。<br />
利用计算机来解决问题的标准思路应该是：为这种问题寻找一种计算机可以理解的表示方法，或曰建立一个模型（一个文档表示模型）；然后基于这个模型，选择各方面满足要求的算法来解决。用谭浩强的话说，程序，就是数据+算法。（啥？你不知道谭浩强是谁？上过学么？学过C么？这捣什么乱？）<br />
既然文本的语义和语用信息很难转换成计算机能够理解的表示形式，接下来顺理成章的，人们开始用文章中所包含的较低级别的词汇信息来表示文档，一试之下，效果居然还不错。<br />
统计学习方法进行文本分类（以下就简称为&#8220;统计学习方法&#8221;，虽然这个方法也可以应用到除文本分类以外的多个领域）的一个重要前提由此产生，那就是认为：文档的内容与其中所包含的词有着必然的联系，同一类文档之间总存在多个共同的词，而不同类的文档所包含的词之间差异很大[1]。<br />
进一步的，不光是包含哪些词很重要，这些词出现的次数对分类也很重要。<br />
这一前提使得向量模型（俗称的VSM，向量空间模型）成了适合文本分类问题的文档表示模型。在这种模型中，一篇文章被看作特征项集合来看，利用加权特征项构成向量进行文本表示，利用词频信息对文本特征进行加权。它实现起来比较简单，并且分类准确度也高，能够满足一般应用的要求。[5]<br />
而实际上，文本是一种信息载体，其所携带的信息由几部分组成：如组成元素本身的信息（词的信息）、组成元素之间顺序关系带来的信息以及上下文信息（更严格的说，还包括阅读者本身的背景和理解）[12]。<br />
而VSM这种文档表示模型，基本上完全忽略了除词的信息以外所有的部分，这使得它能表达的信息量存在上限[12]，也直接导致了基于这种模型构建的文本分类系统（虽然这是目前绝对主流的做法），几乎永远也不可能达到人类的分类能力。后面我们也会谈到，相比于所谓的分类算法，对特征的选择，也就是使用哪些特征来代表一篇文档，往往更能影响分类的效果。<br />
对于扩充文档表示模型所包含的信息量，人们也做过有益的尝试，例如被称为LSI（Latent Semantic Index潜在语义索引）的方法，就被实验证明保留了一定的语义信息（之所以说被实验证明了，是因为人们还无法在形式上严格地证明它确实保留了语义信息，而且这种语义信息并非以人可以理解的方式被保留下来），此为后话。</span></span></p>
<p><span style="font-family: 微软雅黑"><span style="font-size: 12pt">前文说到（就不能不用这种老旧的说法？换换新的，比如Previously on "Prison Break"，噢，不对，是Previously on Text Categorizaiton&#8230;&#8230;）统计学习方法其实就是一个两阶段的解决方案，（1）训练阶段，由计算机来总结分类的规则；（2）分类阶段，给计算机一些它从来没见过的文档，让它分类（分不对就打屁屁）。</span></span></p>
<p><span style="font-family: 微软雅黑"><span style="font-size: 12pt">下一章就专门说说训练阶段的二三事。</span></span></p>
<img src ="http://www.blogjava.net/zhenandaci/aggbug/205100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenandaci/" target="_blank">Jasper</a> 2008-06-01 00:02 <a href="http://www.blogjava.net/zhenandaci/archive/2008/06/01/205100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文本分类入门(二)文本分类的方法</title><link>http://www.blogjava.net/zhenandaci/archive/2008/05/31/205089.html</link><dc:creator>Jasper</dc:creator><author>Jasper</author><pubDate>Sat, 31 May 2008 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhenandaci/archive/2008/05/31/205089.html</guid><wfw:comment>http://www.blogjava.net/zhenandaci/comments/205089.html</wfw:comment><comments>http://www.blogjava.net/zhenandaci/archive/2008/05/31/205089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenandaci/comments/commentRss/205089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenandaci/services/trackbacks/205089.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt; font-family: 微软雅黑">文本分类问题与其它分类问题没有本质上的区别，其方法可以归结为根据待分类数据的某些<span style="color: #3366ff">特征</span>来进行匹配，当然完全的匹配是不太可能的，因此必须（根据某种评价标准）选择最优的匹配结果，从而完成分类。<br style="font-family: " />
因此核心的问题便转化为用哪些特征表示一个文本才能保证有效和快速的分类（注意这两方面的需求往往是互相矛盾的）。因此自有文本分类系统的那天起，就一直是对特征的不同选择主导着方法派别的不同。<br />
<br style="font-family: " />
最早的词匹配法仅仅根据文档中是否出现了与类名相同的词（顶多再加入同义词的处理）来判断文档是否属于某个类别。很显然，这种过于简单的方法无法带来良好的分类效果。<br />
<br style="font-family: " />
后来兴起过一段时间的知识工程的方法则借助于专业人员的帮助，为每个类别定义大量的推理规则，如果一篇文档能满足这些推理规则，则可以判定属于该类别。这里与特定规则的匹配程度成为了文本的特征。由于在系统中加入了人为判断的因素，准确度比词匹配法大为提高。但这种方法的缺点仍然明显，例如分类的质量严重依赖于这些规则的好坏，也就是依赖于制定规则的&#8220;人&#8221;的好坏；再比如制定规则的人都是专家级别，人力成本大幅上升常常令人难以承受；而知识工程最致命的弱点是完全不具备可推广性，一个针对金融领域构建的分类系统，如果要扩充到医疗或社会保险等相关领域，则除了完全推倒重来以外没有其他办法，常常造成巨大的知识和资金浪费。<br />
<br style="font-family: " />
后来人们意识到，究竟依据什么特征来判断文本应当隶属的类别这个问题，就连人类自己都不太回答得清楚，有太多所谓&#8220;只可意会，不能言传&#8221;的东西在里面。人类的判断大多依据经验以及直觉，因此自然而然的会有人想到何让机器像人类一样自己来通过对大量同类文档的观察来自己总结经验，作为今后分类的依据。<br style="font-family: " />
这便是<span style="color: #3366ff">统计学习</span>方法的基本思想（也有人把这一大类方法称为机器学习，两种叫法只是涵盖范围大小有些区别，均无不妥）。<br style="font-family: " />
统计学习方法需要一批由人工进行了准确分类的文档作为学习的材料（称为<span style="color: #3366ff">训练集</span>，注意由人分类一批文档比从这些文档中总结出准确的规则成本要低得多），计算机从这些文档重挖掘出一些能够有效分类的规则，这个过程被形象的称为<span style="color: #3366ff">训练</span>，而总结出的规则集合常常被称为<span style="color: #3366ff">分类器</span>。训练完成之后，需要对计算机从来没有见过的文档进行分类时，便使用这些分类器来进行。<br style="font-family: " />
现如今，统计学习方法已经成为了文本分类领域绝对的主流。主要的原因在于其中的很多技术拥有坚实的理论基础（相比之下，知识工程方法中专家的主观因素居多），存在明确的评价标准，以及实际表现良好。<br />
<br style="font-family: " />
下一章就深入统计学习方法，看看这种方法的前提，相关理论和具体实现。</span>
<img src ="http://www.blogjava.net/zhenandaci/aggbug/205089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenandaci/" target="_blank">Jasper</a> 2008-05-31 22:52 <a href="http://www.blogjava.net/zhenandaci/archive/2008/05/31/205089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文本分类入门(参考文献)</title><link>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204927.html</link><dc:creator>Jasper</dc:creator><author>Jasper</author><pubDate>Sat, 31 May 2008 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204927.html</guid><wfw:comment>http://www.blogjava.net/zhenandaci/comments/204927.html</wfw:comment><comments>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenandaci/comments/commentRss/204927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenandaci/services/trackbacks/204927.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt; font-family: 微软雅黑">文本分类入门系列所有文章的参考文献集中列于此,其他文章中再做引用时仅列出标号,不再重复写出作者和出版物,出版年份等信息.<br style="font-family: " />
<br style="font-family: " />
[1]李晓明，闫宏飞，王继民，&#8220;搜索引擎——原理、技术与系统&#8221;.科学出版社，2004<br style="font-family: " />
[2]冯是聪, "中文网页自动分类技术研究及其在搜索引擎中的应用," 北京大学,博士论文, 2003<br style="font-family: " />
[3]Y. Yang and X. Liu, "A re-examination of text categorization methods" presented at Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR'99), 1999.<br style="font-family: " />
[4]F. Sebastiani, "A tutorial on Automated Text Categorization", Proceedings of ASAI-99, 1st Argentinian Symposium on Artificial Intelligence, Buenos Aires, AR, 1999<br style="font-family: " />
[5]王涛：文本自动分类研究，图书馆学研究，2007.12<br style="font-family: " />
[6]周文霞：现代文本分类技术研究，武警学院学报，2007.12<br style="font-family: " />
[7]奉国和：自动文本分类技术研究，情报杂志，2007.12<br style="font-family: " />
[8]崔彩霞，张朝霞：文本分类方法对比研究，太原师范学院学报（自然科学版），2007.12<br style="font-family: " />
[9]吴军：Google黑板报数学之美系列，http://googlechinablog.com<br style="font-family: " />
[10]刘霞，卢苇：SVM在文本分类中的应用研究，计算机教育，2007.1 <br style="font-family: " />
[11]都云琪，肖诗斌：基于支持向量机的中文文本自动分类研究,计算机工程，2002，28(11)<br style="font-family: " />
[12]周昭涛，卜东波：文本的图表示初探，中文信息学报，第19卷 第2期<br style="font-family: " />
[13]Baeza-Yates,R.and Ribeiro-Neto:Modern Information Retrieval,1st ed.Addison Wesley Longman,Reading,MA,1999<br style="font-family: " />
[14]唐春生，张磊：文本分类研究进展<br style="font-family: " />
[15]李莼，罗振声：基于语义相关和概念相关的自动分类方法研究，计算机工程与应用，2003.12<br style="font-family: " />
[16]单松巍，冯是聪，李晓明：几种典型特征选取方法在中文网页分类上的效果比较，计算机工程与应用，2003.22<br style="font-family: " />
[17]Yiming Yang,Jan O Pedersen:A comparative Study on Feature Selection in Text Categorization, Proceedings of the Fourteenth International Conference on Machine Learning(ICML~97)，l997<br style="font-family: " />
[18]董振东：知网简介，知网，http://www.keenage.com/zhiwang/c_zhiwang.html<br style="font-family: " />
[19]Tom M.Mitchell,&#8221;Machine Learning&#8221;,McGraw Hill Companies，1997<br style="font-family: " />
[20] Edda&nbsp; Leopold, Jorg Kindermann,&#8220;Text Categorization with Support Vector Machines：How to Represent Texts in Input Space?&#8221;, Kluwer Academic Publishers,2002<br style="font-family: " />
[21] Thorsten Joachims,&#8221;Text Categorization with Support Vector Machines: Learning with Many Relevant Features&#8221;<br style="font-family: " />
[22]Nello Cristianini,An Introduction to Support Vector Machines and Other Kernel-based Learning Methods,Cambridge University Press,2000</span> 
<img src ="http://www.blogjava.net/zhenandaci/aggbug/204927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenandaci/" target="_blank">Jasper</a> 2008-05-31 20:08 <a href="http://www.blogjava.net/zhenandaci/archive/2008/05/31/204927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文本分类入门(一)文本分类问题的定义</title><link>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204646.html</link><dc:creator>Jasper</dc:creator><author>Jasper</author><pubDate>Sat, 31 May 2008 04:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204646.html</guid><wfw:comment>http://www.blogjava.net/zhenandaci/comments/204646.html</wfw:comment><comments>http://www.blogjava.net/zhenandaci/archive/2008/05/31/204646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhenandaci/comments/commentRss/204646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhenandaci/services/trackbacks/204646.html</trackback:ping><description><![CDATA[<br />
<p><span style="font-family: 微软雅黑"><span style="font-size: 12pt">一个文本（以下基本不区分&#8220;文本&#8221;和&#8220;文档&#8221;两个词的含义）分类问题就是将一篇文档归入预先定义的几个类别中的一个或几个，而<span style="color: #3366ff">文本的自动分类</span>则是使用计算机程序来实现这样的分类。通俗点说，就好比你拿一篇文章，问计算机这文章要说的究竟是体育，经济还是教育，计算机答不上就打它的屁屁（&#8230;&#8230;）。<br />
注意这个定义当中着重强调的两个事实。<br />
第一，用于分类所需要的类别体系是<span style="color: #3366ff">预先确定</span>的。例如新浪新闻的分类体系，Yahoo!网页导航的分类层次。这种分类层次一旦确定，在相当长的时间内都是不可变的，或者即使要变更，也要付出相当大的代价（基本不亚于推倒并重建一个分类系统）。<br />
第二，一篇文档并没有严格规定只能被分配给一个类别。这与分类这个问题的主观性有关，例如找10个人判断一篇文章所陈述的主题究竟属于金融，银行还是财政政策领域，10个人可能会给出11个不同的答案（聪明的读者，您应该能看出来并没有11个答案，这只是一种修辞方法，笑），因此一篇文章很可能被分配到多个类别当中，只不过分给某些类别让人信服，而有些让人感觉模棱两可罢了（说的专业点，置信度不一样）。</span></span></p>
<p><span style="font-family: 微软雅黑"><span style="font-size: 12pt">八股是一种写文章的格式，过去用于科举，现在用于科研，总之，和科学有点关系的文章就得八股，鉴于我正锻炼自己写论文的能力，所以按照标准的格式，陈述了文本分类问题的定义之后，我要说说它的应用范围。<br />
<br />
现在一说到文本分类，大部分人想当然的将这个问题简化为判断一篇文章说的是什么，这只是文本分类的一小部分应用，我们可以称之为&#8220;依据主题的分类&#8221;。实际上，文本分类还可以用于判断文章的写作风格，作者态度（积极？消极？），甚至判断作者真伪（例如看看《红楼梦》最后二十回到底是不是曹雪芹写的）。总而言之，凡是与文本有关，与分类有关，不管从什么角度出发，依据的是何特征，都可以叫做文本分类。<br />
当然，目前真正大量使用文本分类技术的，仍是依据文章主题的分类，而据此构建最多的系统，当属搜索引擎。内里的原因当然不言自明，我只是想给大家提个醒，文本分类还不完全等同于网页分类。网页所包含的信息远比含于其中的文字（文本）信息多得多，对一个网页的分类，除了考虑文本内容的分类以外，链入链出的链接信息，页面文件本身的元数据，甚至是包含此网页的网站结构和主题，都能给分类提供莫大的帮助（比如新浪体育专栏里的网页毫无疑问都是关于体育的），因此说文本分类实际上是网页分类的一个子集也毫不为过。当然，纯粹的文本分类系统与网页分类也不是一点区别都没有。文本分类有个重要前提：即只能根据文章的文字内容进行分类，而不应借助诸如文件的编码格式，文章作者，发布日期等信息。而这些信息对网页来说常常是可用的，有时起到的作用还很巨大！因此纯粹的文本分类系统要想达到相当的分类效果，必须在本身的理论基础和技术含量上下功夫。<br />
除了搜索引擎，诸如数字图书馆，档案管理等等要和海量文字信息打交道的系统，都用得上文本分类。另外，我的硕士论文也用得上（笑）。<br />
下一章和大家侃侃与文本分类有关的具体方法概览，有事您说话。<br />
</span></span></p>
  <img src ="http://www.blogjava.net/zhenandaci/aggbug/204646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhenandaci/" target="_blank">Jasper</a> 2008-05-31 12:59 <a href="http://www.blogjava.net/zhenandaci/archive/2008/05/31/204646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>