System.out.println("Usage: ClusterSSpace\n" +
options.prettyPrint());
System.exit(1);
}
Clustering clustering = ReflectionUtil.getObjectInstance(
options.getStringOption('a'));
SemanticSpace sspace = new StaticSemanticSpace(
options.getStringOption('s'));
int numClusters = options.getIntOption('c', 0);
Set<String> words = sspace.getWords();
List<DoubleVector> vectors = new ArrayList<DoubleVector>();
List<SparseDoubleVector> sparseVectors =
new ArrayList<SparseDoubleVector>();
for (String word : words) {
Vector v = sspace.getVector(word);
if (v instanceof SparseDoubleVector)
sparseVectors.add((SparseDoubleVector) v);
else
vectors.add(Vectors.asDouble(sspace.getVector(word)));
}
Properties props = System.getProperties();
Assignments assignments = null;
if (sparseVectors.size() > 0) {
SparseMatrix matrix = Matrices.asSparseMatrix(sparseVectors);
assignments = (numClusters > 0)
? clustering.cluster(matrix, numClusters, props)
: clustering.cluster(matrix, props);
} else {
Matrix matrix = Matrices.asMatrix(vectors);
assignments = (numClusters > 0)
? clustering.cluster(matrix, numClusters, props)
: clustering.cluster(matrix, props);
}
int a = 0;
for (String word : words) {
Assignment assignment = assignments.get(a++);