Flesch-Kincaid Lesbarkeit: Verbessere die PHP-Funktion

7

Ich habe diesen PHP-Code geschrieben, um den Flesch-Kincaid Readability Score als Funktion zu implementieren:

%Vor%

Haben Sie Vorschläge, wie Sie den Code verbessern können? Ist es richtig? Wird es funktionieren?

Ich hoffe, du kannst mir helfen. Vielen Dank im Voraus!

    
caw 02.07.2009, 21:40
quelle

4 Antworten

17

Der Code sieht gut aus, so weit eine Heuristik geht. Hier sind einige Punkte zu beachten, dass die Dinge, die Sie für eine Maschine berechnen müssen erheblich schwierig:

  1. Was ist ein Satz?

    Im Ernst, was ist ein Satz? Wir haben Perioden, aber sie können auch für den Ph.D. verwendet werden, z. B. Y.M.C.A., und andere nichtsatzbezogene Zwecke. Wenn Sie Ausrufezeichen, Fragezeichen und Ellipsen berücksichtigen, tun Sie sich selbst einen schlechten Dienst, wenn Sie davon ausgehen, dass ein bestimmter Zeitraum ausreicht. Ich habe mir dieses Problem vorher angesehen, und wenn Sie wirklich eine zuverlässigere Anzahl von Sätzen in echtem Text wünschen, müssen Sie den Text analysieren. Dies kann rechenintensiv, zeitaufwändig und schwer zu finden sein. Am Ende müssen Sie sich immer noch um die Fehlerrate der jeweiligen Parser-Implementierung kümmern. Jedoch wird nur vollständiges Parsen Ihnen sagen, was ein Satz ist und was nur andere Perioden eines Zeitraumes sind. Darüber hinaus müssen Sie sich auch Gedanken über Sätze machen, die nicht mit Interpunktion, sondern mit Tag-Endungen enden, wenn Sie Text "in freier Wildbahn" - wie zB HTML - verwenden. Zum Beispiel fügen viele Seiten den h1- und h2-Tags keine Interpunktionszeichen hinzu, aber es sind eindeutig verschiedene Sätze oder Sätze.

  2. Silben sind nicht etwas, an das wir uns annähern sollten

    Dies ist ein Hauptmerkmal dieser Lesbarkeitsheuristik, und es macht es am schwierigsten zu implementieren. Die computergestützte Analyse der Silbenzahl in einer Arbeit erfordert die Annahme, dass der angenommene Leser im selben Dialekt spricht, wie auch immer Ihr Silbenzählergenerator trainiert wird. Wie Töne um eine Silbe fallen, ist tatsächlich ein großer Teil dessen, was Akzente Akzente setzt. Wenn Sie mir nicht glauben, versuchen Sie einmal, Jamaika zu besuchen. Was das bedeutet, dass, selbst wenn ein Mensch die Berechnungen dafür per Hand durchführen würde, es immer noch eine dialektspezifische Punktzahl wäre.

  3. Was ist ein Wort?

    Nicht im geringsten psycholinguistisch zu wachsen, aber Sie werden feststellen, dass räumlich getrennte Wörter und was als Worte für einen Sprecher konzipiert sind, ganz anders sind. Dies macht das Konzept einer berechenbaren Lesbarkeitsbewertung etwas fragwürdig.

Am Ende kann ich Ihre Frage "Wird es funktionieren" beantworten. Wenn Sie nach einem Text suchen und diesen Lesbarkeitswert unter anderen Metriken anzeigen möchten, um einen denkbaren Mehrwert zu bieten, wird der anspruchsvolle Benutzer nicht alle diese Fragen aufgreifen. Wenn du versuchst, etwas Wissenschaftliches zu tun, oder sogar etwas Pädagogisches (wie dieses Ergebnis und solche wie es letztlich beabsichtigt war), würde ich nicht wirklich stören. In der Tat, wenn Sie dies verwenden, um einem Benutzer irgendwelche Vorschläge über Inhalte, die sie generiert haben, zu machen, wäre ich sehr zögerlich.

Ein besserer Weg, die Leseschwäche eines Textes zu messen, wäre wahrscheinlich etwas mit dem Verhältnis von niederfrequenten Wörtern zu hochfrequenten Wörtern zusammen mit der Anzahl von hapax legomena im Text. Aber ich würde nicht versuchen, eine solche Heuristik zu entwickeln, denn es wäre sehr schwierig, so etwas empirisch zu testen.

    
Robert Elwell 02.07.2009, 22:14
quelle
8

Sehen Sie sich die PHP Text Statistics -Klasse an auf GitHub.

    
Alix Axel 07.09.2009 04:47
quelle
6

Bitte beachten Sie die folgenden zwei Klassen und ihre Nutzungsinformationen. Es wird dir sicher helfen.

Readability Syllable Count Pattern-Bibliotheksklasse:

%Vor%

Eine andere Klasse, die Lesbarkeitsklasse mit zwei Methoden zur Berechnung der Punktzahl ist:

%Vor%

// Beispiel: wie man

benutzt %Vor%     
Nikunj Kabariya 25.01.2017 05:30
quelle
0

Ich sehe tatsächlich keine Probleme mit diesem Code. Natürlich könnte es ein bisschen optimiert werden, wenn Sie wirklich wollen, indem Sie alle verschiedenen Funktionen durch eine einzige Zählschleife ersetzen. Ich würde jedoch stark argumentieren, dass es nicht notwendig und sogar völlig falsch ist. Ihr derzeitiger Code ist sehr gut lesbar und leicht zu verstehen, und alle Optimierungen würden die Dinge aus dieser Perspektive wahrscheinlich verschlimmern. Verwenden Sie es so, wie es ist, und versuchen Sie nicht, es zu optimieren, es sei denn, es stellt sich tatsächlich als Leistungsengpass heraus.

    
Emil H 02.07.2009 21:51
quelle