http://www.0x32.cn/html/y2010/558.html

        对于文本的聚类处理,普遍方法是使用数字来表示文本集合,然后通过算法来处理表示的文本数据。

我使用分词器对文本集合进行分词,然后使用TFIDF向量数字化文本,对于普通的网页数据,分次下来词的数量可能会达到几千,然后文本越多,这个维度空间就越大,计算起来会很吃力。

         这里就会用到文本特征的降维处理,文本的数量不可减,只能通过优秀或者高质量的词来表示当前文档,降低词的数量,减少维度。

       文本中词的质量可以度量为一下的公式:

f为词t在文本j中的词频。

A为至少包含一次词t的文本数量

词t的质量q表示为:

     q(t) = A -B 
  词T的质量  =  所有包含词T的文本的词频平方的和 -  (所有包含词T的文本的词频和的平方 / 所有文本集合的数量)

下面是自己设置的一组测试数据:

====================================================
分词i在文档j中的词频
====================================================

(词频f) 分词1 分词2 分词3 分词4 分词5
文档1 0 2 1 2 1
文档2 2 3 1 4 1
文档3 3 4 1 0 3
文档4 2 2 3 4 5
文档5 2 2 0 4 5

=====================================================

通过公式可以计算出各个分词的质量数:

分词1的质量q(t1)表示为:
——————————————————
q(t1) =  A – B/C

A = (2*2 + 3*3 + 2*2 + 2*2) = 4 + 9 + 4+ 4 = 21;

B =  (2+3+2+2) * (2+3+2+2) = 81;

C = 4;

q(t1) = 21 – 81/4 = 0.5;
—————————————————–
分词2的质量q(t2)表示为:
——————————————————
q(t2) =  A – B/C

A = (2*2 + 3*3 + 4*4 + 2*2 + 2*2) = 4+9+16+4+4 = 37;

B =  (2+3+4+2+2) * (2+3+4+2+2) = 13 * 13 = 169;

C = 5;

q(t2) = 37 – 136/5 = 37 – 33.8 = 3.2 ;
—————————————————–
分词4的质量q(t4)表示为:
——————————————————
q(t2) =  A – B/C

A = (2*2 + 4*4 + 4*4 + 4*4) = 4 + 16 + 16+ 16 = 52;

B =  (2+4+4+4) * (2+4+4+4) = 196;

C = 4;

q(t1) = 21 – 81/4 = 3;
—————————————————–
====================================================== 

          通过这样处理后,能够得出分词器分词后的所有词的质量,通过选择质量大于某个值的所有分词作为当前文本集合的特征,得到相应的向量空间,再来进行聚类处理,效果会不会比标准的K均值好一些呢.? 均值算法受到文本顺序、特征处理、以及聚类数、初始中心以及算法实现等多种因素影响,只有测试下才知道了,之前使用2种均值算法,对同一文本集合进行处理,效果也是大相径庭。

            5个分类*5条的数据,丢进去,出来的数据乱七八糟。

不知道这个质量算法实现的有没有问题,还得把均值算法的中心点选择问题搞定了才能测试看到效果。