Я работаю над обнаружением рифм в Python, используя словарь словаря Carnegie Mellon University, и хотел бы знать: как я могу оценить фонематическое сходство между двумя словами? Другими словами, существует ли алгоритм, который может идентифицировать тот факт, что «руки» и «планы» ближе к рифму, чем «руки» и «фри»?Оценить фонематическое сходство между двумя словами
Некоторые контекст: Во-первых, я был готов сказать, что два слова рифмуются, если их основной ударный слог и все последующие слоги идентичны (c06d, если вы хотите скопировать в Python):
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
Если я затем запустить
print cmu_final_sound_dict["hands"]
print cmu_final_sound_dict["plans"]
Я вижу, что руки и планы звучат очень похожи. Я мог бы попытаться оценить это сходство самостоятельно, но я подумал, что должен спросить: существуют ли сложные алгоритмы, которые могут привязать математическое значение к этой степени звукового (или слухового) сходства? То есть, какие алгоритмы или пакеты можно использовать для математизации степени фонематического сходства между двумя словами? Я понимаю, что это большой вопрос, но я был бы очень благодарен за любой совет, который другие могут предложить по этому вопросу.
Зачем голосовать и двигаться, чтобы закрыть? Что я могу сделать, чтобы улучшить вопрос? – duhaime
Вы ищете что-то вроде алгоритма Soundex (http://en.wikipedia.org/wiki/Soundex)? – acfrancis
Я не могу говорить за нисходящего, но причина, на которую дается за закрытое голосование, заключается в том, что ваш вопрос выглядит так: [запрашивать рекомендации] (http://meta.stackoverflow.com/questions/254393/what-exactly-is -a-рекомендация-вопрос). Вы можете перефразировать его, чтобы более четко спросить «Как я могу сделать X? *», А не «* Какой инструмент я должен использовать для выполнения X?» –