Ich verwende Ruby, um den Gunning Fog Index eines Inhalts zu berechnen, den ich habe. Ich kann den hier beschriebenen Algorithmus erfolgreich implementieren:
Ich verwende die folgende Methode, um die Anzahl der Silben in jedem Wort zu zählen:
%Vor%Es nimmt manchmal Wörter mit nur 2 Silben als 3 Silben auf. Kann jemand einen Rat geben oder kennt eine bessere Methode?
%Vor%"selbst" wird als 3 gezählt, aber es sind nur 2
Die Funktion, die ich Ihnen zuvor gegeben habe, basiert auf diesen einfachen Regeln, die hier skizziert sind:
Jeder Vokal (a, e, ich, o, u, y) in a Wort zählt als eine Silbe die folgenden Unterregeln:
- Ignoriere End-ES, -ED, -E (außer für -LE)
- Wörter mit drei Buchstaben oder weniger zählen als eine Silbe
- Aufeinanderfolgende Vokale zählen als eins Silbe.
Hier ist der Code:
%Vor%Natürlich ist das auch nicht perfekt, aber alles, was du jemals mit so etwas bekommen wirst, ist eine Heuristik.
Ich habe den Code leicht geändert, um mit einem führenden 'y' umzugehen, und die Regex korrigiert, um besser mit 'les' Endungen umgehen zu können (wie in "Kerzen").
Hier ist ein Vergleich mit dem Text in der Frage:
%Vor%Die Ausgabe ist:
%Vor%Es scheint also eine Verbesserung zu sein.
Eine Sache, die Sie tun sollten, ist Ihren Algorithmus über diphthongs zu unterrichten . Wenn ich Ihren Code richtig lese, würde es "Hilfe" fälschlicherweise als zwei Silben kennzeichnen.
Sie können auch "es" und ähnliches zu Ihren Sonderfällen hinzufügen (Sie haben bereits "ing") und zählen sie nicht einfach als eine Silbe, aber das könnte immer noch zu Fehlzählungen führen.
Schließlich sollten Sie für beste Genauigkeit Ihre Eingabe in ein Rechtschreibschema oder ein Alphabet umwandeln, das eine eindeutige Beziehung zur Aussprache des Wortes hat. Mit Ihrem "sich selbst" -Beispiel hat der Algorithmus keine zuverlässige Möglichkeit zu wissen, dass das "e" "ves" gelöscht wird. Allerdings, wenn Sie es als "themselvz", oder lehrte den Algorithmus die IPA und fütterte es [ðəmsɛlvz], es wird sehr deutlich, dass das Wort nur mit zwei Silben ausgesprochen wird. Das setzt natürlich voraus, dass Sie die Kontrolle über die Eingabe haben und wahrscheinlich mehr Arbeit haben, als nur die Silben selbst zu zählen.
Zunächst scheint es, dass Sie len für die Suffixe dekrementieren sollten, die ausgeschlossen werden sollten.
%Vor%Sie können auch Lingua :: EN :: Readability lesen.
Es kann auch mehrere Lesbarkeitsmessungen berechnen, wie zum Beispiel einen Nebelindex und eine Flesch-Kincaid-Ebene.
PS. Ich denke ich weiß wo du die Funktion von bekommen hast. DS.
Es gibt auch einen Rubygem namens Odyssey , der Gunning Fog zusammen mit einigen anderen beliebten (Flesch-Kincaid, SMOG usw.)