1. A computer system comprising: a computer processor configured to store documents in a database; a cluster subsystem configured to convert documents in a database into vectors; a construction subsystem configured to construct a hierarchical structure for the vectors by randomly assigning the vectors to nodes; a comparison subsystem configured to generate for each one of a plurality documents in the database a patch comprising a list of the documents in the database most similar to the respective one of a plurality of documents in the database; a confidence subsystem configured to generate self-confidence values for each of the generated patches such that the generated self-confidence values comprise the proportion of documents of a first one of the generated patches that are also in a second one of the generated patches, the confidence subsystem being configured to use weighted self-confidence values to compute relative self-confidence values for each of the generated patches; a cluster estimation subsystem configured to determine best size of a cluster of each of the generated patches, and a graphical subsystem for displaying the generated patches.