Ejemplo n.º 1
0
    def compare(self, document):
        if not self.categories_membership:
            self.calculate_membership_to_categories()

        if not document.categories_membership:
            document.calculate_membership_to_categories()

        changed_membership = copy(self.categories_membership)
        categories_by_membership = sorted(
            self.categories_membership.iteritems(),
            key=itemgetter(1),
            reverse=True
        )
        maximal = categories_by_membership[0][1]

        for key in changed_membership:
            changed_membership[key] /= maximal

        importance = min(len(filter(lambda x: x > .5, changed_membership.values())), 4)
        important_categories = categories_by_membership[:importance]

        important_categories_dict = dict(important_categories)

        return TextComparisonResult(jaccard(
            important_categories_dict,
            document.categories_membership,
            min,
            max,
        ), important_categories_dict)
Ejemplo n.º 2
0
def compare(image1, image2):
    return jaccard(
        get_properties(image1),
        get_properties(image2),
        min,
        max
    )
Ejemplo n.º 3
0
    def calculate_membership_to_categories(self):
        """
            :param categories: list of Categories
            :type categories: list
            sim(d, cj)
        """
        if not self.terms_membership:
            self.calculate_terms_membership()

        for category in self.categories:
            self.categories_membership[category] = jaccard(
                self.terms_membership,
                self.terms_relevance[category.identifier],
                algebraic_product,
                algebraic_sum,
            )