Flesch-Kincaid okunabilirlik: PHP fonksiyonunu geliştirin

3 Cevap php

Ben bir fonksiyonu olarak Flesch-Kincaid okunabilirlik Puan uygulamak için bu PHP kodu yazdı:

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;
}

Eğer kod geliştirmek için nasıl bir öneriniz var mı? Bu doğru mudur? Işe yarayacak mı?

Bana yardımcı olur umarım. Şimdiden teşekkürler!

3 Cevap

Kod kadar bir sezgisel gider olarak gayet iyi görünüyor. İşte bu, bir makine için oldukça zor hesaplamak için gereken öğeleri yapmak dikkat etmeniz gereken bazı noktalar şunlardır:

  1. Bir cümle nedir?

    Cidden, bir cümle nedir? Biz dönemleri var, ama onlar da Ph.D., örneğin, yani, YMCA, ve diğer non-cümle final amaçlar için kullanılabilir. Eğer ünlem işareti, soru işaretleri, ve elips dikkate aldığımızda, gerçekten kendinizi bir süre hile yapacak varsayarak bir kötülük yapıyoruz. Ben önce bu soruna baktım ve gerçekten gerçek metinde cümle daha güvenilir sayılmasını istiyorsanız, metin ayrıştırmak gerekir. Bu ücretsiz kaynakların bulmak için hesaplama, yoğun zaman alıcı ve zor olabilir. Sonunda, hala belirli ayrıştırıcı uygulama hata oranı hakkında endişelenmenize gerek. Ancak, yalnızca tam ayrıştırma sadece bir dönem diğer birçok kullanımları ne bir cümle ne size söyleyecektir. HTML, demek gibi - - Sen 'vahşi' metin kullanarak eğer Ayrıca, ayrıca noktalama ile değil etiket uçları ile değil biten cümleler endişelenmenize gerek gidiyoruz. Örneğin, birçok site h1 ve h2 etiketleri noktalama katmayan, ama onlar açıkça farklı cümleler veya ifadeler demektir.

  2. Hece biz yaklaşan gereken bir şey değildir

    Bu, okunabilirlik buluşsalın önemli bir özelliğidir, ve o en zor uygulamak için yapar biri. Bir iş hece sayısının hesaplama analizleri kabul okuyucu hece sayısı jeneratör üzerine eğitiliyor ne olursa olsun aynı lehçesinde konuştuğu varsayımını gerektirir. Nasıl bir hece etrafında düşüş sesler aksan aksan kılan önemli bir parçasıdır gerçek olduğunu. Bana inanmıyorsanız, bazen Jamaika ziyaret deneyin. Bu bir insan eli tarafından bu için hesaplamalar yapmak olsa bile, hala bir lehçesi özgü skor olacağını da ne demektir.

  3. Bir kelime nedir?

    Ufak psycholingusitic balmumu, ama o boşluk ayrılmış kelime ve ne bir hoparlör kelime olarak kavramsallaştırdığı oldukça farklı olduğunu göreceksiniz değil. Bu bir hesaplanabilir okunabilirlik skoru kavramı biraz şüpheli yapacaktır.

Yani sonunda, ben 'bu iş olacak' sorunuza cevap verebilir. Eğer metin bir parça alır ve akla gelebilecek katma değer çeşit sunmak için diğer ölçümler arasında bu okunabilirlik skoru görüntülemek için arıyorsanız, yüksek kullanıcı tüm bu soruların getirecektir değil. Eğer (bu skoru ve bunun gibi bu sonuçta amaçlanan olduğu gibi) bilimsel bir şey, hatta pedagojik bir şeyler yapmaya çalışıyorsanız, ben gerçekten rahatsız olmaz. Onlar yarattı içeriği hakkında bir kullanıcıya öneri her türlü yapmak için bu kullanmak için gidiyoruz eğer, aslında, ben son derece kararsız olacaktır.

Bir metin okuma zorluğu ölçmek için daha iyi bir yolu daha muhtemel metinde hapax legomena sayısı ile birlikte yüksek frekanslı bir deyişle düşük frekans kelimelerin oranı ile yapmak zorunda şey olurdu. Ampirik olarak böyle bir şey test etmek çok zor olurdu çünkü Ama aslında böyle bir buluşsalın ile geliyor takip etmem.

GitHub PHP Text Statistics sınıfına bir göz atın.

Ben aslında bu kod ile herhangi bir sorun görmüyorum. Eğer gerçekten bir tek sayma döngü ile tüm farklı işlevleri yerine istiyorsa tabii ki, bu biraz optimize olabilir. Ancak, şiddetle gerekli ve hatta düpedüz yanlış olmadığını iddia ediyorum. Geçerli kod çok okunabilir ve anlaşılması kolaydır ve herhangi optimizasyonlar muhtemelen bu açıdan kötü şeyler yapmak istiyorum. Olduğu gibi kullanın, ve aslında bir performans darboğazı olarak çıkıyor sürece optimize etmeye çalışmayın.