RegEx:比较两个字符串以查找Alliteration和Assonance

Fra*_*sco 7 javascript php regex

可以比较两个字符串来查找Alliteration和Assonance吗?

我主要使用javascript或php

Tim*_*ora 9

我不确定正则表达式是构建强大的比较工具的最佳方式.简单的正则表达式可能是更大的解决方案的一部分,该解决方案使用更复杂的算法进行非精确匹配.

英语有多种随时可用的选项,其中一些可以简单地扩展到使用拉丁字母的语言.大多数这些算法已经存在了数年甚至数十年,并且有很好的文档记录,尽管它们都有限制.

我想非拉丁字母表有类似的算法,但我无法直接评论它们的可用性.

语音算法

探测法算法是近100年的历史,并已在多种编程语言实现.它用于根据字符串的发音确定数值.它不精确,但它可能有助于识别类似的发音词/音节.我已经在MS SQL Server中对它进行了实验,它可以在PHP中使用.

http://php.net/manual/en/function.soundex.php

一般共识(包括PHP文档)是Metaphone在处理英语时比Soundex更准确.有许多可用的实现(维基百科在文章末尾有一个很长的列表),它包含在PHP中.

http://www.php.net/manual/en/function.metaphone.php

Double Metahpone支持对应于该单词的替代发音的单词的第二编码.

与Metaphone一样,Double Metaphone已经在许多编程语言中实现(例子).

词解构

Levenshtein可用于建议替代拼写(例如,规范用户输入),并且可能有助于作为更精细的头韵和协调算法的一部分.

http://www.php.net/manual/en/function.levenshtein.php

从逻辑上讲,它有助于理解字符串中单词的音节,从而可以解构每个单词.音节中断可以解决关于如何发音两个相邻字母的模糊性.这个帖子有几个链接:

PHP音节检测

  • +1很好的答案!作为一名拥有英语学位的程序员,我非常喜欢挖掘您的链接! (2认同)