diff --git a/about.php b/about.php index 9941723..23ccdc3 100644 --- a/about.php +++ b/about.php @@ -18,6 +18,20 @@ include('templates/header.php'); L'affichage du nuage est possible grâce au travail de Timothy Guan-tin Chien.

+

+ La comparaison des mots est en partie possible grâce au travail d'adaptation de la + transcription soundex en français faite par Florent Bruneau + et expliquée + sur son blog. +

+

+ Ce site démontre une fois de plus la force du partage de connaissances. + Sans le travail de ces personnes, et de toutes les autres impliquées + dans le développement des langages que j'utilise, + des logiciels que j'utilise, des algorithmes que j'utilise, + jamais je n'aurais pu proposer cet outil. + Vive le logiciel libre, vive les communs. +

diff --git a/db.php b/db.php index a0948fb..76489e9 100644 --- a/db.php +++ b/db.php @@ -1,5 +1,5 @@ = 75 && $perc_meta >= 80) { + $word_sim = similar_text($word1, $word2, $word_perc); + $meta_sim = similar_text(metaphone($word1), metaphone($word2), $meta_perc); + $sndx_sim = similar_text(soundex_fr($word1), soundex_fr($word2), $sndx_perc); + if ($word_perc >= 90 || $meta_perc >= 90 || $sndx_perc >= 90) { + return true; + } + if ($word_perc >= 80 && $meta_perc >= 80 && $sndx_perc >= 80) { return true; } return false; diff --git a/soundex_fr.php b/soundex_fr.php new file mode 100644 index 0000000..0b21b5e --- /dev/null +++ b/soundex_fr.php @@ -0,0 +1,63 @@ + 'E', 'È' => 'E', 'Ë' => 'E', 'Ê' => 'E', + 'Á' => 'A', 'À' => 'A', 'Ä' => 'A', 'Â' => 'A', 'Å' => 'A', 'Ã' => 'A', + 'Ï' => 'I', 'Î' => 'I', 'Ì' => 'I', 'Í' => 'I', + 'Ô' => 'O', 'Ö' => 'O', 'Ò' => 'O', 'Ó' => 'O', 'Õ' => 'O', 'Ø' => 'O', + 'Ú' => 'U', 'Ù' => 'U', 'Û' => 'U', 'Ü' => 'U', + 'Ç' => 'C', 'Ñ' => 'N', 'Ç' => 'S', '¿' => 'E', + 'é' => 'e', 'è' => 'e', 'ë' => 'e', 'ê' => 'e', + 'á' => 'a', 'à' => 'a', 'ä' => 'a', 'â' => 'a', 'å' => 'a', 'ã' => 'a', + 'ï' => 'i', 'î' => 'i', 'ì' => 'i', 'í' => 'i', + 'ô' => 'o', 'ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'õ' => 'o', 'ø' => 'o', + 'ú' => 'u', 'ù' => 'u', 'û' => 'u', 'ü' => 'u', + 'ç' => 'c', 'ñ' => 'n'); + $convGuIn = array( 'GUI', 'GUE', 'GA', 'GO', 'GU', 'SCI', 'SCE', 'SC', 'CA', 'CO', + 'CU', 'QU', 'Q', 'CC', 'CK', 'G', 'ST', 'PH'); + $convGuOut = array( 'KI', 'KE', 'KA', 'KO', 'K', 'SI', 'SE', 'SK', 'KA', 'KO', + 'KU', 'K', 'K', 'K', 'K', 'J', 'T', 'F'); + $convVIn = array( '/E?(AU)/', '/([EA])?[UI]([NM])([^EAIOUY]|$)/', '/[AE]O?[NM]([^AEIOUY]|$)/', + '/[EA][IY]([NM]?[^NM]|$)/', '/(^|[^OEUIA])(OEU|OE|EU)([^OEUIA]|$)/', '/OI/', + '/(ILLE?|I)/', '/O(U|W)/', '/O[NM]($|[^EAOUIY])/', '/(SC|S|C)H/', + '/([^AEIOUY1])[^AEIOUYLKTPNR]([UAO])([^AEIOUY])/', '/([^AEIOUY]|^)([AUO])[^AEIOUYLKTP]([^AEIOUY1])/', '/^KN/', + '/^PF/', '/C([^AEIOUY]|$)/', '/E(Z|R)$/', + '/C/', '/Z$/', '/(?