首先,這不是一個特定於語言的問題,下面的例子使用PHP,但更多的是用於找到答案的方法(正則表達式?)。如何從數組中獲取最重要的事件?
比方說,我有一個數組:
$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...
我想獲取,顯示了最重要的組合的組合。所以我想做的事:
$magicPattern = [something that renders most important occurrences];
preg_match($magicPattern, $array, $matches);
print_r($matches);
作爲輸出我希望收到類似:「伯特和厄尼遊戲」
PS: 我沒有必要尋找一個實際的數組,一個概念這樣做也會很棒。
UPDATE:
低於當前的代碼,如果這個任何想法,將找到一個發生的最好版本的好方法?很難從功能的source中找出它。
$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
如何程序可能分不清什麼是重要還是不重要? – psmears
夠公平的。也許「重要」這個詞沒有被正確選擇,但是這個問題的目標是正確的嗎? –
不是真的,除非你可以更詳細地說你的意思。你的意思是單獨發生的話最頻繁嗎?在同一個字符串中出現頻率最高?發生最頻繁的彼此相鄰?還有別的嗎?如果你能告訴我們你真正想要的是什麼,它會容易得多:) – psmears