首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从数组中获取最重要的事件?

如何从数组中获取最重要的事件?
EN

Stack Overflow用户
提问于 2015-06-17 09:34:55
回答 2查看 32关注 0票数 0

首先,这不是一个特定于语言的问题,下面的例子使用PHP,但更多的是关于方法(regex?)找到答案。

假设我有一个数组:

代码语言:javascript
复制
$array = ['The Bert and Ernie game', 'The Bert & Ernie game', 'Bert and Ernie game', 'Bert and Ernie game - english version', 'Bert & Ernie (game)', 'Bert and Ernie - game'] etc...

我想获取一个显示最重要组合的组合。所以我想做:

代码语言:javascript
复制
$magicPattern = [something that renders most important occurrences];
preg_match($magicPattern, $array, $matches);
print_r($matches);

作为一个输出,我想得到这样的东西:“伯特和厄尼游戏”。

PS:我没有必要去寻找一个真正的数组,这样做的概念也会很棒。

更新:

下面的代码中,如果这是找到最佳版本的好方法,有什么想法吗?很难从函数的来源中计算出来。

代码语言:javascript
复制
$array['The Bert and Ernie game']               =0; //lev distance
$array['The Bert & Ernie game']                 =0; //lev distance
$array['Bert and Ernie game']                   =0; //lev distance
$array['Bert and Ernie game - english version'] =0; //lev distance
$array['Bert & Ernie (game)']                   =0; //lev distance
$array['Bert and Ernie - game']                 =0; //lev distance

foreach($array as $currentKey => $currentVal){
    foreach($array as $matchKey => $matchVal){
        $array[$currentKey] += levenshtein($currentKey, $matchKey);
    }
}

$array = array_flip($array);
ksort($array);

echo array_values($array)[0]; //Bert and Ernie game
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 09:44:11

对于这样的问题,有很多不同的解决方案,我个人不推荐这方面的正则表达式。这通常是使用全文搜索索引解决的问题(只需谷歌全文搜索许多方法即可)。

对于这个特殊情况,假设您没有太多的数据,您可以只计算Levenshtein距离:http://php.net/manual/en/function.levenshtein.php

或者使用similar_text()函数:http://php.net/manual/en/function.similar-text.php

票数 1
EN

Stack Overflow用户

发布于 2015-06-17 09:43:29

您需要一些东西来查看每个值并计算一个数字权重,然后根据权重对数组进行排序,并取最上面的项目。

权重是你的“重要性”,例如,你可以选择给你认为更重要的术语赋予更高的权重。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30887722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档