我正在使用卡內基梅隆大學發音字典檢測Python中的韻,並且想知道:我如何估計兩個詞之間的音素相似度?換句話說,是否有一種算法能夠識別「手」和「計劃」比「手」和「薯條」更接近押韻的事實?估計兩個詞之間的音素相似性
一些方面:首先,我願意說,兩個詞押韻,如果他們的主要重讀音節和所有後續音節是相同的(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"]
我可以看到,手和計劃聽起來非常類似。我可以自己估計這種相似性,但我想我應該問:是否有複雜的算法可以將數學值與這種聲音(或聽覺)相似度結合起來?也就是說,用什麼算法或軟件包來數字化兩個詞之間的音素相似度?我意識到這是一個很大的問題,但我會非常感謝其他人就此問題提供的任何建議。
爲什麼選擇down-vote和move to close?我能做些什麼來改善這個問題? – duhaime 2014-10-20 21:04:11
你在找什麼像Soundex算法(http://en.wikipedia.org/wiki/Soundex)? – acfrancis 2014-10-20 21:08:30
我不能說downvoter,但給出近距離投票的理由是,你的問題看起來像[要求推薦](http://meta.stackoverflow.com/questions/254393/what-exactly-is -a-推薦個問題)。你可能想要更清楚地問一下「*我該怎麼做X?*」而不是「*我應該用哪個工具來做X?*」 – 2014-10-20 21:09:27