我很难找到一种方法来检测两个单词是否具有相同的英语押韵。它不是相同的音节结尾,而是更接近语音相似性。
我无法相信2009年这样做的唯一方法就是使用那些老式的韵律词典。你知道任何资源(在PHP中会是一个加分)来帮助我完成这项痛苦的任务吗?
谢谢。
你的暗示非常好。我会花一些时间来调查它。无论如何,有关DoubleMetaPhone的更多信息可以找到here in a proper PHP code(另一个是扩展名)。 有关MethaPhone功能和doublemetaphone in Php.net的有趣信息。
他们特别提醒双手机与metaphone的速度有多慢(比较慢100倍)。
答案 0 :(得分:4)
Soundex不会帮助你。 Soundex专注于单词的开头,而不是结尾。一般来说,它认为你很难找到任何工具来做到这一点。即使对于语言学家来说,这个词的根源也比它的结尾更有趣。
一般来说,你要做的就是在音节中划分单词并比较它们的最后一个音节。如果你可以将它分成音素,改变它们的顺序并对反向词进行比较,那就更好了。
您可能会尝试比较metaphone keys的最后一部分。
答案 1 :(得分:3)
参见Bradley Buda's CS project summary from U. Michigan,它使用Levenshtein距离作为原子来寻找押韵英语单词。我相信结合Levenshtein和soundex会给出更好的结果。
答案 2 :(得分:1)
除了提到的soundex()函数ramonzoellner之外,还有另一个名为levenshtein()的函数,用于计算两个单词之间的levenshtein distance。这可能对你有所帮助。
答案 3 :(得分:1)
好像你需要找到一个包含发音和可能的压力/强调的数据库:具有相似音节的多音节词,但对不同音节的压力并不十分押韵,至少在能够使用它们的意义上诗;例如“诗”和“哼”。其他答案(levenshtein& soundex)应该有助于找到候选人,但他们不会证实:
答案 4 :(得分:-1)
您是否尝试过soundex()函数?如果单词听起来相似,它应该至少给你一些指示。