| import re | |
| import separasilabas | |
| def count_words(text): | |
| text = ''.join(filter(lambda x: not x.isdigit(), text)) | |
| clean = re.compile(r'\W+') | |
| text = clean.sub(' ', text).strip() | |
| return len(text.split()) if len(text.split()) > 0 else 1 | |
| def count_sentences(text): | |
| text = text.replace("\n", "") | |
| sentence_end = re.compile(r'[.:;!?\)\()]') | |
| sentences = sentence_end.split(text) | |
| sentences = list(filter(None, sentences)) | |
| return len(sentences) if len(sentences) > 0 else 1 | |
| def count_all_syllables(text): | |
| clean = re.compile(r'\W+') | |
| words = clean.sub(' ', text).strip().split() | |
| silabizer = separasilabas.silabizer() | |
| total = 0 | |
| for word in words: | |
| total += len(silabizer(word)) | |
| return total if total > 0 else 1 | |
| def Pval(text): | |
| syllables = count_all_syllables(text) | |
| words = count_words(text) | |
| return round(syllables / words, 2) | |
| def Fval(text): | |
| sentences = count_sentences(text) | |
| words = count_words(text) | |
| return round(words / sentences, 2) | |
| def fernandez_huerta(text): | |
| return round(206.84 - 60 * Pval(text) - 1.02 * Fval(text), 2) | |