public function distance(array $sample, array $ngrams, $total)
{
$score = 0;
$penalty = count($sample) + 1;
$pos = 0;
foreach (array_slice($ngrams, 0, count($sample)) as $ngram => $dummy) {
if (empty($sample[$ngram])) {
$score += $penalty;
$pos++;
continue;
}
$score += abs($pos - $sample[$ngram]['pos']);
$pos++;
}
return 1 - $score / (($penalty - 1) * $total);
}