jasper 2012-09-12 13:02
@无名
请注意本文发表于2009年3月;您所指的地址发表于2010年9月,整整晚了18个月,究竟谁是原创,不需要我多解释了吧。
jasper 2009-11-13 12:28
不是的,在代码中250就是数字的250,加上引号就变成字符串了。@hellwen
jasper 2009-10-05 14:44
如果要谈什么重要还是不重要,那首先要牢记评判重要的标准,或者说,明确自己说的指标针对什么问题而言重要还是不重要。文中的观点是告诉大家tfidf在特征选择阶段不重要,而在分类阶段很重要。但有太多的朋友在辩驳时混淆了问题的讨论范围。您也一再强调tfidf值一样的词对分类的影响云云,可见您其实也在用我的结论往另一个问题上套。不过学习的过程大抵如此,我们一错再错,一错再错,但却越来越好,越来越好。希望能和大家一起进步。@eric
jasper 2009-08-08 15:47
@妞妞
可以试试卡方检验(chi test)。
jasper 2009-08-05 08:56
@rubby
不是的。
jasper 2009-08-03 22:46
@miao
哦,需要一个apache的commons的jar包,可以去www.apache.org找到。
jasper 2009-08-03 08:46
@miao
查看一下自己使用的jdk版本,保证jdk5以后.另外我没有测试过非开源版的ictclas,但是据他们的文档和ictclas4j的作者讲,非开源的版本词库要全得多,速度也快得多。
jasper 2009-07-20 22:03
呵呵,您再好好想想.@zhiyuan
jasper 2009-07-01 19:55
根据某公司的要求,将源码下载去掉了.
jasper 2009-06-09 17:32
@tttt
请注意,本地的application可以找到的资源,在web服务器中未必找得到,所以请试着把ictclas的词典文件(也就是data文件夹)放在正确的位置才可以。
jasper 2009-06-05 16:56
@radar
准确的说,计算权重是为了能给每篇文章一个"唯一"的身份,就跟计算指纹不是为了得到指纹数据本身,而是为了得到唯一性一样.我们需要一种指标,这种指标能让计算机"看到"不同的两篇文章确实不同,并且知道不同在哪里.只有能看到这种不同,计算机才能看出同类文章相似在哪里.如果有一种指标,它衡量每篇文章时结果都一样,显然程序没法在这种数据基础上学习分类的.因此形成向量表示实际是一个中间目的,终极的目的是为了让文章之间看上去彼此不同,并且这种不同有所依据.
jasper 2009-05-02 16:47
@lianghao.lee
连您自己都同意了我的观点,即认为单纯使用tfidf值来判断一个特征是否有区分度不够,而应该考虑该值在类间的分布,这个分布情况,不管您给它起什么名字,它一定不叫tfidf,它只是以tfidf值为基础,正如信息增益,卡方检验和互信息等方法全都是以特征的文档频率为基础一样,它们都不叫文档频率方法,只有直接依据文档频率大小排序的方法才叫做“文档频率特征选择”(而且确实有这种方法)。因为说到底,我们从文本中能观察到的量其实只有两个:词频和文档频率,所有的方法一律以这两个量为计算基础,但不能由此把所有的方法都叫做词频方法或者文档频率方法。tfidf也是一种很基础的量(它是由词频和文档频率计算来的),同样它也带来了较词频和文档频率单独使用完全不同的效果。
如果您同意这些,您就会明白我所说的“tfidf不能用来做特征选择”,正是指单独使用一个特征的tfidf值来判断毫无道理,卡方检验完全基于文档频率计算,但单看文档频率也毫无道理(好吧,文档频率有那么一点道理,呵呵)。
另外,两个文档的相似度在有的分类模型里(例如支持向量机)里完全没有用处,您通过文档在空间中的分布也可以看出来,一些位于类别边界附近的文档,其实与另一个类里的文档更加相似(反而与同类的文档不那么相似),在这种模型中,我们仅通过它所处的位置来判断分类,而丝毫不受它与谁相似的影响。相信这一点您一想就能明白。当然这里所争论的乃是对分类来说文档相似度是否一定有用(对有的方法完全没用),而不是说tfidf对判断相似是否有用,我要说,对文档相似度计算来说,tfidf是非常有效的。
jasper 2009-04-26 17:07
@lianghao.lee
就是因为不同的人在分类的不同阶段对“重要”的定义彼此不同,所以大家会在一项指标重要还是不重要上存在分歧。注意我在谈特征选择阶段特征对类别区分度方面的“重要”,而您纠结在文章向量表示时相似度判别时的“重要”。这种混淆很常见,所以也不能怪您,如果您有兴趣继续在文本分类方面深入,相信您有一天会得到不同的理解。
jasper 2009-04-26 12:25
@koala
如果假设各个特征项是独立的,可以简单的计算每个特征的增益,然后取和。
如果假设不是独立的,就把他们的组合看成是一个新的变量,统计这个新变量可能的取值,每个取值取到的概率,重复运用信息增益的公式计算即可。
jasper 2009-04-19 10:08
@lebee_leon
是,还要再回过头来说的。
jasper 2009-04-13 16:27
@志大才疏
遗憾的是基本没有什么文献会仔细的说,这可能是学术论文的通病吧,总希望读者看不懂才好。
jasper 2009-04-11 10:37
@志大才疏
注意我说过,当你忽略类别的大小时用1除以类别总数。您的做法是考虑了类别大小的方法。
jasper 2009-03-30 16:31
@swift7593
就是这个地方挺容易让人误解的,中间那条直线的表达式应该是g(x)=0,它和g(x)可是两回事哦。
jasper 2009-03-24 15:32
@alemist
是的,还没有写完,呵呵。
jasper 2009-03-23 15:35
@lebee_leon
我想说三点:
一是负特征对某些问题的分类是有帮助的,例如女性的第二性征对男性来说是负特征,但对判断一个人是否为男性是很有帮助的,针对文本分类来说,负特征是否表征作用比正特征弱,尚没有定论,因此不必急着剔除掉负特征.
二是负特征实际上也很容易被看出来,负特征一般特征值很大,但文档频率很小(因为它代表的是基本不会在某个类别出现的词),我们特征选择的时候,对每个类别也一般会先滤掉低频词(比如文档频率小于3的词),这就剔除了很多的负特征.
三是从实验数据的观察来看,特征值很大的那些特征,极少有负特征,这个理论上没有依据,纯粹是观察的结果.
综合以上三点,我个人觉得负特征不是一个很大的问题,当然如果你的系统追求理论上的完备性,你也可以对此做些处理.
jasper 2009-03-22 15:24
@yjwmylm
ictclas因为有一个卖钱的商业版,所以这个开源的版本毛病还是比较多的。比如有一些词库中不存在的词,就会扔空指针的错误,比如“深圳”,“大阪”这样的词。
还有对一些特殊的字符串模式,比如单引号隔几个字符再加一个什么什么的,就会报错(年代有些久远,记不太清了)。还有一些特殊的字符,也会报错。如果不是很重视这些偏门的东西,建议还是修改一下源代码,把这样的异常屏蔽下就好。
jasper 2009-03-21 13:12
@lebee_leon
是这样的,您稍微想一想就可以明白这代表什么样的意义。
jasper 2009-03-20 13:04
@leon
不好意思,没有明白您的意思,“返回该页没有发现”是指什么?
jasper 2009-03-17 19:55
@gd chen
我其实有一节专门列出了文本分类系列文章的参考文献,地址是
jasper 2009-03-13 19:51
不是您那么理解的啦,我在原文中增加了说明,可以参考一下。
jasper 2009-03-06 16:47
呵呵,您显然忽略了我的提醒,在g(x)这个表达式中,x不是指横坐标,这里的x 是一个二维向量,就是我们传统的(x,y)(前面这个式子里的x才是横坐标),您代进去看看,这个式子即有横坐标,又有纵坐标,明明是条直线嘛(笑)……@志大才疏
jasper 2009-02-02 13:16
我在"文本分类入门"系列文章的第十节把开方检验详细讲了一遍,有兴趣可以关注.@小年
jasper 2008-12-24 23:06
呵呵,想一想为什么声明的部分是英文?因为任何编码中英文字符总是相同的,因此无论使用什么编码保存的文件,系统总是可以读懂声明部分(即使文件中的其他内容一律乱码),因此声明提供的信息才重要。@matthew
jasper 2008-11-26 23:49
哎呀呀,多亏了您这么一说,我才发现原来写好的第九节没有贴上去,呵呵……@康桥阳光
jasper 2008-11-24 18:46
未分词的版本整个有100兆大,您可以加我的qq49900829,有机会在线传给您。
jasper 2008-09-23 00:13
啊,你提醒了我,文章中关于data文件夹放置的位置是错的,正确的位置应该是你建的eclipse项目的文件夹下,而不是bin目录下,这回应该可以了吧。
jasper 2008-06-02 00:04
整来整去,发现不会个脚本语言不行了,用java有时候真是大炮打蚊子.开始学习ruby!!呵呵
jasper 2008-03-04 10:52
请教一下ireport的问题:
我在xp操作系统上直接安装ireport,安装成功,也可以打开。
但是,在虚拟机中安装了jdk\tomcat\ant等等,并添加了一系列环境变量,再安装ireport,反而无法打开,报:
could not find the main class. program will exit.
请问问题出在哪里呢?
谢谢!
jasper 2005-10-22 11:23
session[:good] ||= good.find(params[:id])
:代表什么?
不加“:”不行吗?