Ich arbeite an der Erkennung von Reimen in Python mit dem Carnegie Mellon University Aussprachewörterbuch und würde gerne wissen: Wie kann ich die phonemische Ähnlichkeit zwischen zwei Wörtern schätzen? Mit anderen Worten, gibt es einen Algorithmus, der die Tatsache erkennen kann, dass "Hände" und "Pläne" dem Reimen näher sind als "Hände" und "Pommes"?Schätzung der phonemischen Ähnlichkeit zwischen zwei Wörtern
Einige Kontext: Zuerst war ich bereit zu sagen, dass zwei Wörter reimen, wenn ihre primäre Silbe betont und alle nachfolgenden Silben sind identisch (c06d wenn Sie wollen in Python replizieren):
def create_cmu_sound_dict():
final_sound_dict = {}
with open('resources/c06d/c06d') as cmu_dict:
cmu_dict = cmu_dict.read().split("\n")
for i in cmu_dict:
i_s = i.split()
if len(i_s) > 1:
word = i_s[0]
syllables = i_s[1:]
final_sound = ""
final_sound_switch = 0
for j in syllables:
if "1" in j:
final_sound_switch = 1
final_sound += j
elif final_sound_switch == 1:
final_sound += j
final_sound_dict[word.lower()] = final_sound
return final_sound_dict
Wenn ich dann
print cmu_final_sound_dict["hands"]
print cmu_final_sound_dict["plans"]
laufen kann ich sehen, dass Hände und Pläne sehr ähnlich klingen. Ich könnte selbst auf eine Einschätzung dieser Ähnlichkeit hinarbeiten, aber ich dachte, ich sollte fragen: Gibt es ausgeklügelte Algorithmen, die einen mathematischen Wert mit diesem Grad an klanglicher (oder auditiver) Ähnlichkeit verbinden können? Das heißt, welche Algorithmen oder Pakete kann man verwenden, um den Grad der phonemischen Ähnlichkeit zwischen zwei Wörtern zu mathematisieren? Ich weiß, dass dies eine große Frage ist, aber ich wäre sehr dankbar für jeden Rat, den andere zu dieser Frage anbieten können.
Warum abstimmen und zum Schließen bewegen? Was kann ich tun, um die Frage zu verbessern? – duhaime
Suchen Sie nach etwas wie dem Soundex-Algorithmus (http://en.wikipedia.org/wiki/Soundex)? – acfrancis
Ich kann nicht für den Downvoter sprechen, aber der Grund für die enge Abstimmung ist, dass Ihre Frage so aussieht, als würde sie nach Empfehlungen fragen (http://meta.stackoverflow.com/questions/254393/what-exactly-is) -eine-Empfehlung-Frage). Sie können es anders formulieren, um klarer zu fragen "* Wie kann ich X? *" Anstatt "* Welches Werkzeug soll ich X benutzen? *" –