2012-12-19 19 views
9

Ich fragte mich, ob jemand irgendwelche Tipps hatte oder mir in die richtige Richtung zeigen konnte, einen Algorithmus zu finden/zu finden, um reimende Wörter zu finden.Implementierung eines Reimfinders

Ich möchte nicht speziell eine API verwenden, da das Erstellen des Algorithmus, nur um es zu erstellen, mein Endziel ist.

Nicht, dass es wichtig sein sollte, aber ich kodiere in Java.

Danke

+0

Viel Glück, endlos hart? – EricG

+0

Was ist die Definition eines Reims? –

+0

@AlexLynch http://en.wikipedia.org/wiki/Rhyme, ich weiß nicht, ob deine Sprache sie definiert hat, aber in meiner Muttersprache (Polnisch) kategorisieren wir auch Reime. ;-) –

Antwort

7

Dies scheint, wie es ein riesiges Projekt sein könnte, wenn Sie eine API nicht verwenden möchten. Der herausfordernde Schritt wäre, die Phonetik eines Wortes zu bestimmen (zwei Wörter reimen, wenn ihre Enden phonetisch ähnlich sind). Wenn Sie dies tun können, können Sie die Endungen ihrer Aussprache vergleichen. Du könntest vielleicht eine API finden, die bekannte Wörter in ihre phonetischen Schreibweisen umwandelt, aber wenn du keine APIs verwenden willst, musst du es selber machen und es ist keine kleine Aufgabe ... ganz zu schweigen davon, dass es von niemandem perfekt war .

Die andere Methode, um die Metaphone Algorithmus zu erforschen wäre, erklärt hier: http://www.blackbeltcoder.com/Articles/algorithms/phonetic-string-comparison-with-soundex

+0

Soundex wurde speziell für nordamerikanische Familiennamen während der Verarbeitung ihrer Volkszählung entwickelt. Es ist keine universelle Bibliothek für die phonetische Analyse von Wörtern, obwohl es wahrscheinlich immer noch für den Fragesteller von Interesse ist. Es konzentriert sich auch auf den Anfang von Wörtern, während sich Reime auf ihre Endungen beziehen. Die Technik kann formbar sein. –

+0

Ich stellte diesen Link wegen des Metaphone-Algorithmus zur Verfügung, nicht Soundex. – Foggzie

6

Beste Algorithmus ein Wörterbuch der Wörter klassifiziert auf Gruppen mit Reimen verwenden. Es ist ein sehr schwieriges Problem und braucht einen linguistischen Hintergrund. Ich nehme an, Sie wollen einen, vielleicht nicht den besten Algorithmus zum automatischen Finden der Reime.

Grundidee, die Aussprache des Wortes (nicht das Wort selbst) mit einem gewissen Wert zu codieren. Und Werte, die mit gleichen Codes enden, identifizieren Wortreime.

Aus meiner Sicht ist es mehr Forschung als das Finden des richtigen Algorithmus.

Werfen Sie einen Blick auf dieses Papier: A System for the Automatic Identification of Rhymes

4

Ich denke, ein Standard-Laut Algorithmus nutzt wäre eine gute Idee sein. Ich denke, Soundex könnte ein bisschen begrenzt sein, aber eine double metaphone wäre wahrscheinlich eine gute Wahl.

Erhalten Sie die Metaphone Darstellungen der fraglichen Wörter, entfernen Sie die ersten Zeichen, und überprüfen Sie, ob der verbleibende Teil des kürzeren der beiden Wörter mit dem Ende des längeren übereinstimmt. Bei einem Doppel-Metaphon ist es sehr ähnlich, aber es werden vier Vergleiche gemacht, primär zu primär, sekundär zu primär, primär zu sekundär und sekundär zu sekundär.

Ich denke, das wäre ein guter Ausgangspunkt.

Eine Anmerkung zu diesem und vielen anderen phonetischen Algorithmen: Es ist nicht entworfen, um genaue phonetische Definition bereitzustellen. Abwechslungsreiche geographische Aussprache, häufige Fehllaute und alternative Aussprache machen es unmöglich, eine einfache Aussprache zu erhalten, die nur auf dem Wort beruht. Neuartige Schreibweise und Verwendung von Buchstaben erschweren es algorithmisch, eine enge Aussprache zu erreichen (Vorsicht bei einigen Vorspeisen?). Ein Hauptziel vieler solcher Algorithmen besteht darin, ähnlich klingende oder falsch verstandene Wörter oder Namen aufeinander abzustimmen, so dass die Ergebnisse normalerweise etwas ungenau sein sollen (dies ist wahrscheinlich auch für diesen Zweck eine gute Sache).

+1

Doppeltes Metaphon löscht alle nicht-anfänglichen Vokale aus dem Wort, so dass es dich nicht den ganzen Weg dorthin reimt. – charleyc

+0

Absolut zutreffend. Ich behaupte jedoch, dass dies ein guter Ausgangspunkt ist. – femtoRgon

3

Ich schrieb ein reimendes Wörterbuchprogramm bei my blog. Die Idee ist, ein Wörterbuch mit Aussprachen zu verwenden und Phoneme vom Ende her zu vergleichen; zwei Wörter mit dem gleichen Ende Phoneme sind Reime füreinander.