1. A computer-implemented method of determining whether applications are similar, comprising: receiving, by a computer, source code for a plurality of applications; associating, for each application, semantic anchors found in the source code for that application with the application, wherein associating semantic anchors comprises building at least one weighted term document matrix from the semantic anchors, the at least one weighted term document matrix comprising at least a first term weighted based on at least a number of the plurality of applications in which a first semantic anchor is present in the source code for those applications; comparing, based on the semantic anchors, a similarity of the first application to a second application; and assigning, based on the comparison, a number representing the similarity of the first and second applications.
1. A computer-implemented method of determining whether applications are similar, comprising: receiving, by a computer, source code for a plurality of applications; associating, for each application, semantic anchors found in the source code for that application with the application, wherein associating semantic anchors comprises building at least one weighted term document matrix from the semantic anchors, the at least one weighted term document matrix comprising at least a first term weighted based on at least a number of the plurality of applications in which a first semantic anchor is present in the source code for those applications; comparing, based on the semantic anchors, a similarity of the first application to a second application; and assigning, based on the comparison, a number representing the similarity of the first and second applications. 10. The method of claim 1 , wherein the associating comprises: associating each semantic anchor with rows of the weighted term document matrix and each application with columns of the weighted term document matrix; and calculating a normalized metric of each semantic anchor in each application's source code, by, for each application, dividing a number of times a particular semantic anchor appears in the application by a number of semantic anchors that appear in the application, and multiplying that quotient by a logarithm of a quotient resulting from dividing a total number of applications by a number of applications where the particular semantic anchor appears.