回答
我不知道,一個正則表達式將是建設一個強大的比較工具的最佳方式。一個簡單的正則表達式可能是一個更大的解決方案的一部分,它使用更復雜的算法進行非精確匹配。
英語有許多隨時可用的選項,其中一些可以相當簡單地擴展到使用Latin alphabet的語言。這些算法大部分已經存在了幾年甚至幾十年,並且已經有很多文檔記錄,儘管它們都有限制。
我想像有非拉丁字母的類似算法,但我不能直接評論他們的可用性。
語音算法
的Soundex算法是近100年的歷史,並已在多種編程語言實現。它用於根據字符串的發音來確定數字值。它不精確,但對識別類似的聲音詞/音節可能很有用。我已經在MS SQL Server中對它進行了試驗,並且它在PHP中可用。
http://php.net/manual/en/function.soundex.php
普遍的共識(包括PHP文檔)是音位是更準確比探測法與英語打交道時。有許多實現可用(Wikipedia在文章結尾處有很長的列表),它包含在PHP中。
http://www.php.net/manual/en/function.metaphone.php
雙Metahpone支持對應於該字的一個替代發音一個字的第二編碼。
與Metaphone一樣,Double Metaphone已經在許多編程語言中實現(example)。
字解構
的Levenshtein可以用於建議替換拼寫(例如,歸一化的用戶輸入),並可能作爲一個更精細的算法頭韻和諧音的部分是有用的。
http://www.php.net/manual/en/function.levenshtein.php
從邏輯上講,這將有助於理解單詞的音節劃分字符串中,讓每個字可以被解構。音節中斷可以解決兩個相鄰字母應該如何發音的模糊性。針對這個討論有幾個環節:
要查找的頭韻文本您只需遍歷所有的話,忽略太短,太普通的話,而且只要收集他們作爲自己的首字母匹配。
text = ''
+'\nAs I looked to the east right into the sun,'
+'\nI saw a tower on a toft worthily built;'
+'\nA deep dale beneath a dungeon therein,'
+'\nWith deep ditches and dark and dreadful of sight'
+'\nA fair field full of folk found I in between,'
+'\nOf all manner of men the rich and the poor,'
+'\nWorking and wandering as the world asketh.'
skipWords = ['the', 'and']
curr = []
text.toLowerCase().replace(/\b\w{3,}\b/g, function(word) {
if (skipWords.indexOf(word) >= 0)
return;
var len = curr.length
if (!len || curr[len - 1].charAt(0) == word.charAt(0))
curr.push(word)
else {
if (len > 2)
console.log(curr)
curr = [word]
}
})
結果:
["deep", "ditches", "dark", "dreadful"]
["fair", "field", "full", "folk", "found"]
["working", "wandering", "world"]
對於更高級的分析,也發現類韻和押韻你首先必須到文本到語音拼寫翻譯。您沒有說明您的目標語言,因爲英語中有一些語音詞典可在線獲取,例如卡內基梅隆:ftp://ftp.cs.cmu.edu/project/fgdata/dict
- 1. PHP比較一個正則表達式和一個字符串
- 2. 正則表達式(字符串比較)
- 3. 正則表達式查找字符串
- 4. 查找兩個字符串內的URL正則表達式
- 5. 正則表達式來查找字符串兩個URL
- 6. 正則表達式兩個字符串
- 7. 日期的正則表達式和字符串比較
- 8. 正則表達式:忽略字符字符串比較
- 9. 在一個字符串中查找多個正則表達式
- 10. 在字符串中查找兩個第一個字(正則表達式)
- 11. Python與幾個正則表達式比較字符串
- 12. 階正則表達式:找到兩個字符串之間串
- 13. 找到一個正則表達式以下字符串
- 14. 使用正則表達式查找兩個字符串的確切等價性
- 15. 以編程方式查找字符串到正則表達式?
- 16. 正則表達式,在字符串中查找表達式。
- 17. 查找使用正則表達式兩個字符串以任意順序
- 18. 正則表達式在字符串中查找字符串
- 19. 正則表達式查找字符串中的字符串
- 20. C#正則表達式查找字符串的字符串
- 21. 一個字符串正則表達式
- 22. 正則表達式:查找字符串和數字
- 23. 在另一個字符串中查找JSON字符串的正則表達式
- 24. 正則表達式如何找到兩個字符串
- 25. JavaScript的正則表達式找到兩個字符串
- 26. Eclipse的正則表達式查找以下字符串
- 27. 使用一個字符串來比較多個正則表達式
- 28. 比較正則表達式
- 29. 正則表達式比較
- 30. 正則表達式比較?
哇,謝謝您對此主題的完整概述! – Francesco
+1好的答案!作爲一名具有英語學位的程序員,我非常喜歡挖掘您的鏈接! – rdlowrey