class_docstr: Abstract clusterer which takes tokens and maps them into a vector space.
  Optionally performs singular value decomposition to reduce the
  dimensionality.
code: def cluster(self, vectors, assign_clusters=False, trace=False):
      assert len(vectors) > 0
  
      # normalise the vectors
      if self._should_normalise:
          vectors = list(map(self._normalise, vectors))
  
      # use SVD to reduce the dimensionality
      if self._svd_dimensions and self._svd_dimensions < len(
          vectors[0]
      ):
          [u, d, vt] = numpy.linalg.svd(
              numpy.transpose(numpy.array(vectors))
          )
          S = d[: self._svd_dimensions] * numpy.identity(
              self._svd_dimensions, numpy.float64
          )
          T = u[:, : self._svd_dimensions]
          Dt = vt[: self._svd_dimensions, :]
          vectors = numpy.transpose(numpy.dot(S, Dt))
          self._Tt = numpy.transpose(T)
  
      # call abstract method to cluster the vectors
      self.cluster_vectorspace(vectors, trace)
  
      # assign the vectors to clusters
      if assign_clusters:
          return [self.classify(vector) for vector in vectors]
  
imports: import copy
  from abc import abstractmethod
  from math import sqrt
  from sys import stdout
  from nltk.cluster.api import ClusterI
label_desc: Use image node_id 2 for calling the VectorSpaceClusterer obj's underlying member method code with example usage: obj.cluster(vectors, assign_clusters, trace) and returns: unknown