文本分词质量、文本特征评价以及降维处理
对于文本的聚类处理,普遍方法是使用数字来表示文本集合,然后通过算法来处理表示的文本数据。
我使用分词器对文本集合进行分词,然后使用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条的数据,丢进去,出来的数据乱七八糟。
不知道这个质量算法实现的有没有问题,还得把均值算法的中心点选择问题搞定了才能测试看到效果。