JAVA解决文本长度问题-标准化文本向量

JAVA解决文本长度问题-标准化文本向量

     根据IFIDF对文本进行分词权重标记后,因为文本的长度各不一样,这就导致文本向量的数值差距明显,为了解决这个问题,我们可以将向量的长度都标准化为1,计算IFIDF后,根据公式:

就是分别对文本的分词计算如上公司,就将每个文本的分词表示成了模长都为1的向量。

下面是java代码:

	/**
	 * 标准化文本特征
	 * @author HideHai
	 * @date 2010-4-7 下午02:54:27
	 */
	private void GenerateNormal(){
		float fA = 0;
		for(int i =0 ;i <_numDocs;i++){
			float totlalog = 0;
			for(int s=0;s<_termWeight.length;s++){
				fA = _termWeight[s][i];
				totlalog +=Math.sqrt(fA*fA);
			}
			for(int s=0;s<_termWeight.length;s++){
				fA = _termWeight[s][i];
				_termWeight[s][i] = fA/totlalog;
			}
		}
	}

---------------------------

其中:

_numDocs 为样本集合的长度。

<_termWeight  为特征化后的文本向量空间。

JAVA解决文本长度问题-标准化文本向量》有9条留言

  1. 楼主,你确定这样标准化是对的?公式里分母的意思不就是求所有元素的绝对值的和么?

  2. 朋友你好,看了你关于k-mean文本聚类的文章很受启发,能否已做过的实验发给我研究研究啊?十分感谢!

  3. 恩,还可以通过层次聚类的算法来实现最佳聚类数的确定…
    我的Email? 你查看你的Email不就知道我的Email了么..About页面有啊。hidehai@foxmail.com

  4. 不少文章说结合层次聚类方法来选取初始聚类中心点可以提高划分类聚类方法的聚类效果

  5. 你好,谢谢关注!
    有篇博文是关于改进的K均值算法的流程:用JAVA实现的一种改进的K均值聚类算法流程
    这个改进算法就涉及到了聚类效果的改进,从实验结果来看,和标准的K均值结果是有差别的,但是我还没有找到一个好的方法来评定优劣。

    在实现了这一系列的东西后,如果良好,我可能会封装成架包方便使用。

    至于实验报告,我就没有做了,下次会留心记录 🙁

  6. 朋友你好,打扰了。最近正在作k-medoids聚类算法的实验。拜读了你的博客,还请你给点建议,有无提高划分类聚类算法效果的方法(k-means、k-medoids都是此类聚类算法),有无具体的实验支撑。觉得你比较内行,能否把你的思路或已做过的实验报告什么的发给我研究研究吗?十分感谢!
    邮箱:monkey228@163.com

回复 hidehai 取消回复