Php 按最高相似度%匹配两组数据中的项目
任务: 我有两列产品名称。 我需要从B列中找到与A1单元格最相似的单元格,然后是A2、A3等单元格 输入: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
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)”,但你处理匹配阵列的方式正是我所寻找的。谢谢