private  void clusterOneName(String name, List<List<String>> docs) {
		List<List<List<String>>> biDocs=new ArrayList<List<List<String>>>();
		biDocs=extractFeature(docs);
		
		//Get the max count of bigram for each article
		int[] maxCount= new int[docs.size()];
		for (int docIndex=0;docIndex< biDocs.size();docIndex++) {
			for(List<String> bigram : biDocs.get(docIndex)){
				if(features.get(bigram)[docIndex+1]>maxCount[docIndex]){
					maxCount[docIndex]=features.get(bigram)[docIndex+1];
				}
			}
		}
		
		//Assign TFIDF weight
		HashMap<List<String>, double[] >tfidf= new HashMap<List<String>,double[]>();
		for (int docIndex=0;docIndex< biDocs.size();docIndex++) {
			for(List<String> bigram : biDocs.get(docIndex)){
				double[] tfidfValue = new double[2];
				int[] idAndCount = new int[docs.size()+1];
				idAndCount=features.get(bigram);
				tfidfValue[0]=idAndCount[0];
				double presentDocCount=0.0;
				for(int count : features.get(bigram)){
					if(count!=0)presentDocCount+=1.0;
				}
				//									TF						IDF
				tfidfValue[1]=((double)idAndCount[docIndex+1]/(double)maxCount[docIndex])*Math.log((double)docs.size()/presentDocCount);
				tfidf.put(bigram, tfidfValue);
			}
		}
		/*
		//visualize tfidf map
		int count=0;
		for(List<String> bigram : tfidf.keySet()){
			if(tfidf.get(bigram)[1]>1){
				System.out.print(bigram);
				count++;
			}
		}
		System.out.println(count);
		*/
		
		//PCA and building kmeans Array start from HERE!!!
		//filling in docarray
		docsArray=new double[docs.size()][tfidf.size()];
		for (int i = 0; i<biDocs.size();i++) {
			List<List<String>> biDoc=new ArrayList<List<String>>();
			biDoc=biDocs.get(i);
			for(List<String> bigram : biDoc){
				int featurePos = features.get(bigram)[0];
				double tfidfValue=tfidf.get(bigram)[1];
				docsArray[i][featurePos] = tfidfValue;
			}			
		}
		
		Kmeans kmeans= new Kmeans();
		HashMap<Integer,Integer> oneRes = new HashMap<Integer,Integer>();
		oneRes = kmeans.cluster(docsArray,docs);
		
		generateXML(name, oneRes);
	}