2009-04-21 5 views
3

J'ai du mal à trouver un moyen de détecter si deux mots a la même rime en anglais. Il ne doit pas être la même fin syllabique mais quelque chose de plus proche de similarité phonétiquement. Je ne peux pas croire en 2009 que la seule façon de le faire est d'utiliser ces dictionnaires de rimes à l'ancienne. Connaissez-vous des ressources (en PHP serait un plus) pour m'aider dans cette tâche douloureuse?Rime en PHP

Merci.

Vos conseils étaient tous vraiment bons. Je vais prendre le temps de l'étudier. Quoi qu'il en soit, plus d'infos sur DoubleMetaPhone peuvent être trouvées here in a proper PHP code (l'autre est une extension). Il existe des informations intéressantes sur la fonction MethaPhone et le doublemetaphone in Php.net.

Ils alertent particulièrement sur la façon de comparer le double metaphone lent avec le métaphone (quelque chose comme 100 fois plus lent).

Répondre

4

Soundex se concentre sur le début du mot, pas sur sa fin. Généralement, il pense que vous aurez du mal à trouver un outil pour le faire. Même pour le linguiste, la racine du mot est plus intéressante que la fin.

Généralement ce que vous aurez à faire est de diviser les mots en syllabes et de comparer leur dernière syllabe. Encore mieux si vous pouviez le diviser en phonèmes, inverser leur ordre et faire une comparaison sur un mot inversé.
Vous pourriez essayer de comparer la dernière partie de metaphone keys.

+0

Double Metaphone est une bonne idée. Alternativement, Sortea2 pourrait inverser les mots originaux et comparer leur Soundex. –

0

Avez-vous essayé la fonction soundex()? Cela devrait vous donner au moins une indication si les mots se ressemblent.

+0

Je ne pense pas que la fonction soundex soit bien adaptée à cela. Regardez les exemples - deux mots qui produisent la même rime soundex presque jamais. double metaphone peut faire plus de sens. – stefs

+0

l'algorithme de double métaphone est disponible sous forme de paquet pecl ici: http://pecl.php.net/package/doublemetaphone – stefs

3

Voir Bradley Buda's CS project summary from U. Michigan, qui utilise la distance de Levenshtein comme un atome pour trouver des mots anglais rimés. Je crois que combiner Levenshtein et soundex devrait donner de meilleurs résultats. Soundex ne vous aidera pas.

1

On dirait que vous avez besoin de trouver une base de données contenant la prononciation, et éventuellement le stress/emphase: des mots multisyllabiques avec des syllabes similaires, mais des contraintes sur différentes syllabes ne riment pas, au moins dans le sens de les utiliser dans des poèmes; par exemple. "poèmes" et "ourlets". Les autres réponses (Levenshtein & soundex) devraient permettre de localiser les candidats, mais ils ne le confirmer:

  • difficile
  • toux
  • pâte
  • par
  • bough