簡體   English   中英

php的levenshtein函數中的成本意味着比較字符串是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM