Php 按最高相似度%匹配两组数据中的项目

Php 按最高相似度%匹配两组数据中的项目,php,matching,levenshtein-distance,Php,Matching,Levenshtein Distance,任务: 我有两列产品名称。 我需要从B列中找到与A1单元格最相似的单元格,然后是A2、A3等单元格 输入: Col A | Col B ------------- Red  | Blackwell Black | Purple   White | Whitewater  Green | Reddit   输出: Col A | Col B ------------- Red  | Blackwell Black | Purple   White | Whitewat

任务: 我有两列产品名称。 我需要从B列中找到与A1单元格最相似的单元格,然后是A2、A3等单元格

输入:

Col A | Col B
-------------
Red   | Blackwell
Black | Purple      
White | Whitewater     
Green | Reddit  
输出:

Col A | Col B
-------------
Red   | Blackwell
Black | Purple      
White | Whitewater     
Green | Reddit  
红色=红色/66%相似

黑色=布莱克威尔/71%相似

白色=白水/66%相似

绿色=红色/30%相似

我认为Levenstein距离可以帮助排序,但我不知道如何应用它

提前感谢,任何信息都有帮助。

使用嵌套循环
使用嵌套循环

我不确定从何处得到这些期望的百分比,因此我将只使用php函数生成的值,您可以决定是否要对它们执行任何计算

levenshtein()
根本无法提供您在问题中要求的匹配项。我想你会更明智地使用
类似的\u text()

代码:()

输出:

array (
  0 => 'Red is most similar to Reddit (sim-score:67%)',
  1 => 'Black is most similar to Blackwell (sim-score:71%)',
  2 => 'White is most similar to Whitewater (sim-score:67%)',
  3 => 'Green is most similar to Purple (sim-score:36%)',
)
--
array (
  0 => 'Red is most similar to Whitewater (lev-score:9)',
  1 => 'Black is most similar to Whitewater (lev-score:9)',
  2 => 'White is most similar to Blackwell (lev-score:8)',
  3 => 'Green is most similar to Blackwell (lev-score:8)',
)

我不确定您从哪里得到这些期望的百分比,所以我将只使用php函数生成的值,您可以决定是否要对它们执行任何计算

levenshtein()
根本无法提供您在问题中要求的匹配项。我想你会更明智地使用
类似的\u text()

代码:()

输出:

array (
  0 => 'Red is most similar to Reddit (sim-score:67%)',
  1 => 'Black is most similar to Blackwell (sim-score:71%)',
  2 => 'White is most similar to Whitewater (sim-score:67%)',
  3 => 'Green is most similar to Purple (sim-score:36%)',
)
--
array (
  0 => 'Red is most similar to Whitewater (lev-score:9)',
  1 => 'Black is most similar to Whitewater (lev-score:9)',
  2 => 'White is most similar to Blackwell (lev-score:8)',
  3 => 'Green is most similar to Blackwell (lev-score:8)',
)

我已经尝试了这个线程中的一个示例:它从数组中查找最接近的字符串进行输入。但我不知道如何使其自动化,所以它不是单个输入项,而是比较数组并查找匹配项。请通过编辑在您的问题中发布您的最佳编码尝试。@mickmackusa我尝试过,但它太长了700个字符。这些百分比是从哪里来的?我已经尝试了这个线程中的一个示例:它从数组中查找最接近的字符串进行输入。但我不知道如何实现自动化,因此它不会对单个输入项进行比较数组并查找匹配项。请通过编辑发布您在问题中的最佳编码尝试。@mickmackusa我尝试过,但它太长了700个字符。这些百分比是从何处得出的?我不知道
percent
参数。我要更新我的答案+我不知道
percent
参数。我要更新我的答案+感谢你给我展示了一些新的东西。谢谢,我确实尝试了Milar_text(),但是我用levenshtein()做的实验显示了更好的结果,我用它做了一些非常相似的项目,比如“Apple iPhone X 128 GB”/“iPhone X(128 GB)”,但你在匹配阵列上的工作方式正是我想要的。谢谢谢谢,我确实尝试过相似的文本(),但是我用levenshtein()进行的实验显示了更好的结果,我用它来处理类似的项目,比如“Apple iPhone X 128 GB”/“iPhone X(128 GB)”,但你处理匹配阵列的方式正是我所寻找的。谢谢