想知道是否有人有任何提示或可以指出正确的方向来查找/创建某种算法来查找押韵词。
我特别不想使用 API,因为创建算法只是为了创建它是我的最终目标。
并不是说它应该很重要,但我正在用 java 编码。
谢谢
想知道是否有人有任何提示或可以指出正确的方向来查找/创建某种算法来查找押韵词。
我特别不想使用 API,因为创建算法只是为了创建它是我的最终目标。
并不是说它应该很重要,但我正在用 java 编码。
谢谢
如果您不想使用 API,这似乎是一个巨大的项目。具有挑战性的步骤是确定一个词的语音(如果两个词的结尾在语音上相似,则两个词押韵)。如果你能做到这一点,你可以比较他们发音的结尾。您可能会找到一个 API 可以将已知单词转换为其拼音,但如果您不想使用 API,您必须自己做,这不是一项小任务……更不用说,任何人都没有做到完美.
另一种方法是研究 Metaphone 算法,在这里解释:http: //www.blackbeltcoder.com/Articles/algorithms/phonetic-string-comparison-with-soundex
最佳算法将使用按押韵分类的单词词典。这是一个非常困难的问题,需要语言学背景。我想你想要一些可能不是最好的自动查找押韵的算法。
用一些价值编码单词(不是单词本身)的发音的基本思想。以相同代码结尾的值识别单词押韵。
从我的角度来看,它比找到正确的算法更多的是研究。
看看那篇论文:押韵自动识别系统
我认为利用标准的语音算法将是一个好主意。我认为 Soundex 可能有点受限,但双变音位可能是一个不错的选择。
获取相关单词的变音位表示,删除第一个字符,并检查两个单词中较短的单词的剩余部分是否与较长单词的结尾匹配。双变音位非常相似,但要进行四个比较,初级到初级,次级到初级,初级到次级,次级到次级。
我认为这将是一个很好的起点。
关于这个和许多其他语音算法的注释:它不是为提供精确的语音定义而设计的。多变的地理读音、常见的误读和交替读音,使得仅凭单词无法获得硬而快速的单一正确读音。新颖的拼写和字母用法使得算法难以获得接近的发音(关心一些开胃小菜吗?)。此外,许多此类算法的主要目标是将相似的发音或听错的单词或名称相互匹配,因此结果通常有点不精确(这可能是一件好事,也是为了这个目的)。
我在我的博客上写了一个押韵词典程序。这个想法是使用带有发音的字典并从末尾开始比较音素;具有相同结尾音位的两个单词是彼此押韵的。
首先,您可能想看看卡内基梅隆大学的发音词典。这是我能找到的最好的发音词典。