Maison > base de données > tutoriel mysql > Comment calculer le pourcentage de similarité de chaînes dans MySQL ?

Comment calculer le pourcentage de similarité de chaînes dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-30 17:59:09
original
293 Les gens l'ont consulté

How to Calculate String Similarity Percentage in MySQL?

Comment calculer la similarité de chaînes dans MySQL

Problème :

Vous avez deux chaînes dans MySQL et devez déterminer leur pourcentage de similarité. Par exemple, étant donné les chaînes "@a = 'Welcome to Stack Overflow'" et "@b = 'Bonjour à stack overflow'", vous souhaitez trouver la similitude entre elles.

Solution :

  1. Créer la distance de Levenshtein Fonction :

    Utilisez la fonction suivante pour calculer la distance de Levenshtein entre deux chaînes :

    CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Copier après la connexion

    La fonction ci-dessus est adaptée de celle fournie sur http://www.artfulsoftware .com/infotree/queries.php#552.

  2. Créez le Fonction de rapport de similarité de Levenshtein :

    Pour convertir la distance de Levenshtein en un rapport de similarité, utilisez cette fonction :

    CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Copier après la connexion

Utilisation :

Pour calculer le pourcentage de similarité entre deux chaînes, utilisez ce qui suit formule :

similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Copier après la connexion
  • LEVENSHTEIN(s1, s2) : calcule la distance de Levenshtein entre les deux chaînes.
  • MAX_LENGTH : la longueur maximale des deux chaînes.

Exemple :

SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Copier après la connexion

Cette requête renverra le pourcentage de similarité entre les deux chaînes, qui dans ce cas serait de 66 %.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal