[英]What does cost mean in php's levenshtein function to compare strings?
我正在研究php的levenshtein函數 ,即使在提交的搜索詞中存在拼寫錯誤,也可以在小型redis實例中創建搜索以獲得匹配。 雖然其中大部分是非常自我解釋,但我很難獲得如何最好地使用三種不同的cost
參數。
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )
文檔中有一個簡短的解釋
第二個變體將采用三個附加參數來定義插入,替換和刪除操作的成本。 這比變體1更通用和自適應,但效率不高。
但這並不能解決我的理解。 有人可以解釋我如何使用成本參數來改善結果/性能嗎?
我不知道它對你所看到的有什么幫助,但我可以解釋這些成本是如何運作的。
默認情況下,insert,replace和delete操作的開銷值為1。
它的意思是
字符串A:hello字符串B:helloo
levenshtein($ stringA,$ stringB)= 1因為它需要1次“插入”操作才能使字符串A ==字符串B.另外,因為插入的成本是1.這就是為什么levenshtein返回1.如果設置“插入成本”到2,你得2。
同樣的想法適用於替換和刪除操作。
請記住,levenshtein數越低,制作字符串A == string B所需的操作就越少。
在機器學習中, 成本函數是您嘗試最小化以實現最佳結果的功能。 當機器執行例如步驟A,B和C時,成本函數將計算執行這些步驟的“成本”。 術語成本與數學函數相關聯,該函數將評估 結果的性能 。
例如,當計算機執行步驟B,C和A時,成本函數將告訴您是否獲得了比上一步更好或更差的結果。
閱讀文檔,你可以看到
Levenshtein距離定義為必須替換,插入或刪除以將str1轉換為str2的最小字符數。
這是您的成本函數:在替換 , 刪除和插入方面最小化距離。
每次算法必須執行其中一個任務時,它就會增加該操作的一個成本 。 最后3個參數可讓您確定每個操作的值。 在比較結束時,您將獲得最終值,即函數的成本 。 如果該值小於定義的閾值,則與假設函數返回true相同。 如果結果大於您的閾值,則意味着它比您允許的一個字符串等於另一個字符串的成本更高。
Levennshtein函數計算2個字符串之間的編輯距離。 編輯距離是將一個字符串轉換為另一個字符串所需的插入/替換/刪除操作的最低成本。 默認情況下,PHP對所有3個操作應用相等的成本。 如果要更改默認成本,可以使用這3個參數。
請在此處查看更多詳細信息: https : //en.wikipedia.org/wiki/Edit_distance
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.