7
votes

FLESCH-KINCAID Lisibilité: améliorer la fonction PHP

J'ai écrit ce code PHP pour implémenter le score FLESCH-KINCAID comme fonction:

function readability($text) {
    $total_sentences = 1; // one full stop = two sentences => start with 1
    $punctuation_marks = array('.', '?', '!', ':');
    foreach ($punctuation_marks as $punctuation_mark) {
        $total_sentences += substr_count($text, $punctuation_mark);
    }
    $total_words = str_word_count($text);
    $total_syllable = 3; // assuming this value since I don't know how to count them
    $score = 206.835-(1.015*$total_words/$total_sentences)-(84.6*$total_syllables/$total_words);
    return $score;
}


0 commentaires

4 Réponses :


0
votes

Je ne vois vraiment aucun problème avec ce code. Bien sûr, cela pourrait être optimisé un peu si vous vouliez vraiment remplacer toutes les fonctions différentes avec une seule boucle de comptage. Cependant, je discuterais fortement que ce n'est pas nécessaire et même manifestement faux. Votre code actuel est très lisible et facile à comprendre, et toutes les optimisations feraient probablement les choses pire de cette perspective. Utilisez-le tel qu'il est, et n'essayez pas d'optimiser cela à moins d'être un goulot d'étranglement de performance.


0 commentaires

16
votes

Le code a l'air bien en ce qui concerne une heuristique. Voici quelques points à considérer qui rendent les articles dont vous avez besoin pour calculer considérablement difficile pour une machine:

  1. Qu'est-ce qu'une phrase?

    Sérieusement, qu'est-ce qu'une phrase? Nous avons des périodes, mais elles peuvent également être utilisées pour doctorat., par exemple, y., y., y., et d'autres fins de dernière phrase-finale. Lorsque vous envisagez des points d'exclamation, des points d'interrogation et des ellipses, vous faites vraiment vous-même un mauvais service en supposant qu'une période fera l'affaire. J'ai déjà examiné ce problème et si vous voulez vraiment un nombre de phrases plus fiable dans le texte réel, vous devez analyser le texte. Cela peut être informellement intensif, consommant du temps et difficile à trouver des ressources gratuites pour. En fin de compte, vous devez toujours vous soucier du taux d'erreur de la mise en œuvre de l'analyseur particulière. Cependant, seule une analyse complète vous dira quelle est une phrase et ce qui est juste une période d'autres utilisations de la période. En outre, si vous utilisez du texte 'à l'état sauvage' - comme, dites, HTML - vous allez également avoir à vous soucier des phrases qui ne se terminent pas par la ponctuation, mais avec des terminaisons de balises. Par exemple, de nombreux sites n'ajoutent pas de ponctuation aux balises H1 et H2, mais elles sont des phrases ou des phrases différentes.

  2. Les syllabes ne sont pas quelque chose que nous devrions être approximatifs

    C'est une caractéristique majeure de cette heuristique de la lisibilité, et c'est celui qui en fait le plus difficile à mettre en œuvre. L'analyse informatique du nombre de syllabes dans une œuvre nécessite l'hypothèse selon laquelle le lecteur supposé parle dans le même dialecte que quel que soit votre générateur de comptage syllabe est formé. Comment les sons tombent autour d'une syllabe est réellement une partie majeure de ce qui fait des accents accents. Si vous ne me croyez pas, essayez de visiter la Jamaïque de temps en temps. Cela signifie que même si un humain devait faire les calculs à la main, il s'agirait toujours d'un score spécifique à la dialecte.

  3. Qu'est-ce qu'un mot?

    Ne pas cire psycholingusitiques dans le moindre, mais vous constaterez que les mots séparés par l'espace et ce qui sont conceptualisés comme des mots à un orateur sont assez différents. Cela rendra le concept d'un score de lisibilité calculable quelque peu discutable.

    Donc, à la fin, je peux répondre à votre question de "ça marche". Si vous souhaitez prendre un texte et afficher ce score de lisibilité parmi d'autres métriques pour offrir une sorte de valeur ajoutée concevable, l'utilisateur perspicace n'apportera pas toutes ces questions. Si vous essayez de faire quelque chose de scientifique, ou même quelque chose de pédagogique (comme ce score et ceux comme celui-ci étant finalement voulu), je ne me dérangerais pas vraiment. En fait, si vous allez utiliser cela pour faire des suggestions à un utilisateur sur le contenu qu'ils ont généré, je serais extrêmement hésitant.

    Un meilleur moyen de mesurer la difficulté de lecture d'un texte serait plus probablement quelque chose à voir avec le rapport de mots à basse fréquence à des mots à haute fréquence avec le nombre de hapax Legomena dans le texte. Mais je ne poursuivrais pas en fait avoir une heuristique comme celle-ci, car il serait très difficile de tester de manière empirique quoi que ce soit.


1 commentaires

Merci beaucoup pour cette réponse détaillée. Maintenant, j'ai compris qu'il n'a pas de sens d'utiliser cette formule si j'ai besoin de résultats exacts.



8
votes

Jetez un coup d'œil au Texte PHP Statistiques classe sur GitHub.


0 commentaires

7
votes

Veuillez consulter deux classes et ses informations d'utilisation. Il vous aidera sûrement à vous aider.

Lisibilité Nombre de syllabe Syllabe Modèle Library Class: P>

<?php // Create object to count readability score
$readObj = new ReadabilityAlgorithm();
echo $readObj->calculateReadabilityScore("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into: electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently; with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum!");
?>


0 commentaires