1. 程式人生 > >蛙蛙推薦:蛙蛙教你文字聚類

蛙蛙推薦:蛙蛙教你文字聚類

{
    
//1、獲取文件輸入
string[] docs = getInputDocs("input.txt");
    
if (docs.Length <1)
    
{
        Console.WriteLine(
"沒有文件輸入");
        Console.Read();
        
return;
    }


    
//2、初始化TFIDF測量器,用來生產每個文件的TFIDF權重
    TFIDFMeasure tf =new TFIDFMeasure(docs, new Tokeniser());

    
int K =3//聚成3個聚類

    
//3、生成k-means的輸入資料,是一個聯合陣列,第一維表示文件個數,
    
//第二維表示所有文件分出來的所有詞
double[][] data =newdouble[docs.Length][];
    
int docCount = docs.Length; //文件個數
int dimension = tf.NumTerms;//所有詞的數目
for (int i =0; i < docCount; i++)
    
{
        
for (int j =0; j < dimension; j++)
        
{
            data[i] 
= tf.GetTermVector2(i); //獲取第i個文件的TFIDF權重向量
        }

    }


    
//4、初始化k-means演算法,第一個引數表示輸入資料,第二個引數表示要聚成幾個類
    WawaKMeans kmeans =new WawaKMeans(data, K);
    
//5、開始迭代
    kmeans.Start();

    
//6、獲取聚類結果並輸出
    WawaCluster[] clusters = kmeans.Clusters;
    
foreach (WawaCluster cluster in clusters)
    
{
        List
<int> members = cluster.CurrentMembership;
        Console.WriteLine(
"-----------------");
        
foreach (int i in members)
        
{
            Console.WriteLine(docs[i]);
        }


    }

    Console.Read();
}