蛙蛙推薦:蛙蛙教你文字聚類
阿新 • • 發佈:2019-02-20
{
//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();
}
//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();
}