Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme de similarité

Développer un algo de check de similarité

    7 octobre 2021 à 16:02:45

    Bonjour à tous,

    Je suis actuellement sur un projet où j'ai besoin de vérifier le pourcentage de duplication entre plusieurs textes. Le but c'est de se rapprocher un maximum du traitement de la duplication de Google.

    Après avoir fait de nombreuses recherches j'ai statué que Simhash était le plus adapté à ça. Il existe de nombreuses librairies et de nombreux paramètres.

    Avec la librairie de https://github.com/nicolaichuk/SimHashPhp dont je me suis inspirés, utilise ce code pour calculer l'indice :

    /**

         * Similarity index

         *

         * @param int $countDifferences

         * @return float

         */

        protected function computeSimilarityIndex($countDifferences)

        {

            return $this->gaussianDensity($countDifferences) / $this->gaussianDensity(0);

        }

        /**

         * Guassian distribution density

         *

         * @param int $x

         * @return float

         */

        protected function gaussianDensity($x)

        {

            $y = - (1 / 2) * pow($x / $this->deviation, 2);

            $y = exp($y);

            $y = (1 / sqrt(2 * pi())) * $y;

            return $y;

        }

    Après avoir récupéré mes fingerprints de mes deux textes, j'aimerais connaître le pourcentage de similarité entre les deux textes.

    Sauf que lors que je passe d'un SIMHASH 64bits, à 128 ou 256, le nombre de bit différent augmente et mon indice devient de plus en plus petit (avec des xxxxxE-19, xxxxE-40).

    Sur l'article du concepteur de la librairie (https://web.archive.org/web/20150227194138/http://www.titouangalopin.com/blog/2014-05-29-simhash) , il explique une formule plus simple : 1 - (diffCount / nbBit)

    Sauf que si j'applique cette formule au lieu du gaussianDensity, les résultats ne sont pas cohérents par rapport d'autres outils sur internet et donne des valeurs très fausses.

    Donc je suis un peu bloqué ... Quelqu'un aurait une idée pour me sortir de ce problème avec Simhash ou aurait une autre idée pour checker la similarité entre plusieurs textes ?

    Merci et très bonne journée !

    • Partager sur Facebook
    • Partager sur Twitter

    Algorithme de similarité

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown