Bei der Berechnung der Dichte erhalte ich immer extrem niedrige Werte, selbst wenn der Artikel nur aus dem Keyword besteht. Ein Einblick in die KeywordDensity.php zeigt folgende Berechnung (Zeile 127):
PHP-Code:
$total / 100 * $arrDensity[$keyword]
Es muss heißen:
PHP-Code:
100 * $arrDensity[$keyword] / $total
Weiterhin wir für $total angesetzt (Zeile 116):
PHP-Code:
$total = count($arrDensity);
das wäre aber nicht die Summe aller Wörter, sondern die Summe aller unterschiedlichen Wörter.
Mein Vorschlag:
PHP-Code:
$total = count($arrWords)-2;
-2 deshalb, weil durch preg_split (Zeile 112) am Anfang und Ende noch zwei Leer-Elemente hinzukommen, die ich wieder abziehe
Nach diesen Änderungen wird meines Erachtens die Dichte richtig berechnet, allerdings scheint dann noch die Einteilung in rot, gelb oder grün fehlerhaft zu sein. Die Einteilung erfolgt ab Zeile 40:
PHP-Code:
if (count($arrKeywords))
{
$intRating = 3;
foreach( $arrKeywords as $keyword => $data )
{
if (($data['percentage'] < $arrRating[1] || $data['percentage'] > $arrRating[2]) && $intRating > 2)
{
$intRating = 2;
}
elseif (($data['percentage'] < $arrRating[0] || $data['percentage'] > $arrRating[3]) && $intRating > 1)
{
$intRating = 1;
}
}
}
Auf diese Weise erhalte ich auch dann ein Rating gelb, wenn es rot sein müsste. Wenn man in Zeile 49 statt elseif nur if nimmt, stimmt auch die Einteilung:
PHP-Code:
if (($data['percentage'] < $arrRating[0] || $data['percentage'] > $arrRating[3]) && $intRating > 1)
Ich habe meine Version der KeywordDensity.php als txt-Datei beigelegt.
Lesezeichen