在 php 的 levenshtein 函数中,cost 是什么意思来比较字符串?
What does cost mean in php's levenshtein function to compare strings?
我正在研究 php 的 levenshtein function 在小型 redis 实例中创建搜索以获取匹配项,即使提交的搜索词中有拼写错误。虽然大部分内容都可以自我解释,但我正在努力了解如何最好地使用三个不同的 cost
参数。
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )
文档中有一个简短的解释
A second variant will take three additional parameters that define the cost of insert, replace and delete operations. This is more general and adaptive than variant one, but not as efficient.
但这并不能解决我的不理解。有人可以解释我如何使用成本参数来改进 results/performance 吗?
我不知道它对你正在寻找的东西有什么帮助,但我可以解释这些费用是如何计算的。
默认情况下,插入、替换和删除操作的成本值为 1。
意思是
字符串A:你好
字符串 B:你好
levenshtein($stringA, $stringB) = 1 因为它需要 1 "insert" 操作来使字符串 A == 字符串 B。另外,因为插入的成本是 1。这就是为什么 levenshtein return 1. 如果将 "insert costs" 设置为 2,则得到 2。
相同的想法适用于替换和删除操作。
请记住,levenshtein 数越小,使字符串 A == 字符串 B 所需的操作就越少。
Levennshtein 函数计算 2 个字符串之间的编辑距离。编辑距离是将一个字符串转换为另一个字符串所需的 insert/replace/delete 操作的最小成本。默认情况下 PHP 对所有 3 个操作应用相同的成本。如果您想更改默认成本,您可以使用这 3 个参数。
在此处查看更多详细信息:https://en.wikipedia.org/wiki/Edit_distance
在机器学习中,成本函数 是您试图最小化以获得最佳结果的函数。例如,当机器执行步骤 A、B 和 C 时,成本函数将计算它 'costed' 执行这些步骤的程度。术语 成本 与一个数学函数有关,该函数将 评估 您的 的 性能 ]结果.
例如,当计算机执行步骤 B、C 和 A 时,成本函数会告诉您您的结果是比上一步更好还是最差。
阅读文档,可以看到
The Levenshtein distance is defined as the minimal number of characters you have to replace, insert or delete to transform str1 into str2.
这就是你的成本函数:根据 replace、delete 和 insert[=33 来最小化距离=].
每次算法必须执行其中一项任务时,它都会累加该操作的 一个成本。最后 3 个参数可让您决定每个操作的值。比较结束后,你会得到一个最终的值,即函数的cost。如果该值比定义的阈值 小 ,则与假设函数返回 true 相同。如果结果大于您的阈值,则意味着它的成本高于您允许一个字符串等于另一个字符串的成本。
我正在研究 php 的 levenshtein function 在小型 redis 实例中创建搜索以获取匹配项,即使提交的搜索词中有拼写错误。虽然大部分内容都可以自我解释,但我正在努力了解如何最好地使用三个不同的 cost
参数。
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )
文档中有一个简短的解释
A second variant will take three additional parameters that define the cost of insert, replace and delete operations. This is more general and adaptive than variant one, but not as efficient.
但这并不能解决我的不理解。有人可以解释我如何使用成本参数来改进 results/performance 吗?
我不知道它对你正在寻找的东西有什么帮助,但我可以解释这些费用是如何计算的。
默认情况下,插入、替换和删除操作的成本值为 1。
意思是
字符串A:你好 字符串 B:你好
levenshtein($stringA, $stringB) = 1 因为它需要 1 "insert" 操作来使字符串 A == 字符串 B。另外,因为插入的成本是 1。这就是为什么 levenshtein return 1. 如果将 "insert costs" 设置为 2,则得到 2。
相同的想法适用于替换和删除操作。
请记住,levenshtein 数越小,使字符串 A == 字符串 B 所需的操作就越少。
Levennshtein 函数计算 2 个字符串之间的编辑距离。编辑距离是将一个字符串转换为另一个字符串所需的 insert/replace/delete 操作的最小成本。默认情况下 PHP 对所有 3 个操作应用相同的成本。如果您想更改默认成本,您可以使用这 3 个参数。
在此处查看更多详细信息:https://en.wikipedia.org/wiki/Edit_distance
在机器学习中,成本函数 是您试图最小化以获得最佳结果的函数。例如,当机器执行步骤 A、B 和 C 时,成本函数将计算它 'costed' 执行这些步骤的程度。术语 成本 与一个数学函数有关,该函数将 评估 您的 的 性能 ]结果.
例如,当计算机执行步骤 B、C 和 A 时,成本函数会告诉您您的结果是比上一步更好还是最差。
阅读文档,可以看到
The Levenshtein distance is defined as the minimal number of characters you have to replace, insert or delete to transform str1 into str2.
这就是你的成本函数:根据 replace、delete 和 insert[=33 来最小化距离=].
每次算法必须执行其中一项任务时,它都会累加该操作的 一个成本。最后 3 个参数可让您决定每个操作的值。比较结束后,你会得到一个最终的值,即函数的cost。如果该值比定义的阈值 小 ,则与假设函数返回 true 相同。如果结果大于您的阈值,则意味着它的成本高于您允许一个字符串等于另一个字符串的成本。