Syllable Counter
Подсчитайте слоги в словах и тексте, анализируйте показатели удобочитаемости и проверьте ударные слоги.
Об этом инструменте
Счётчик слогов — это лёгкое приложение для анализа ритмической структуры текста путём подсчёта слогов в словах и измерения сложности текста через метрики читаемости. Понимание распределения слогов помогает писателям, поэтам и изучающим язык осознать, как течёт текст, и соответствует ли содержание целевой аудитории. В отличие от систем, основанных на словарях и требующих серверных запросов, это приложение работает мгновенно в вашем браузере, используя эвристику групп гласных, которая обрабатывает типичные английские шаблоны.
Для использования инструмента просто вставьте или введите текст в поле ввода и нажмите Анализировать. Инструмент показывает общее количество слогов, число слов, среднее число слогов на слово и классификацию читаемости от простой (менее 1,5 слога на слово) до сложной (более 2,5). Анализ слово за словом показывает отдельные слоги, помогая вам определить, какие слова больше всего влияют на плотность текста. Это особенно полезно для поэтов, совершенствующих метр, авторов, приводящих содержание в соответствие с возрастным уровнем, или авторов песен, подгоняющих текст под ритм мелодии.
Счётчик применяет коррекции для немых букв (например, конечная 'e' в "cake") и обрабатывает типичные английские образцы, такие как окончания -le. Для максимальной точности при необычных собственных именах или узкоспециальной терминологии проверьте результаты по словарю произношения. Инструмент оптимизирован для английского языка; другие языки имеют иные правила слогоделения и могут дать лишь приблизительные результаты.
Часто задаваемые вопросы
Реализация кода
import re
def count_syllables(word: str) -> int:
word = word.lower().strip(".,!?;:'"")
if not word:
return 0
# Special case: silent 'e' at end
if word.endswith('e') and len(word) > 2:
word = word[:-1]
# Count vowel groups
vowels = "aeiouy"
count = 0
prev_was_vowel = False
for char in word:
is_vowel = char in vowels
if is_vowel and not prev_was_vowel:
count += 1
prev_was_vowel = is_vowel
return max(1, count)
def count_syllables_in_text(text: str) -> dict:
words = re.findall(r"[a-zA-Z']+", text)
total = sum(count_syllables(w) for w in words)
return {
"words": len(words),
"syllables": total,
"avg_per_word": round(total / len(words), 2) if words else 0
}
text = "The quick brown fox jumps over the lazy dog"
result = count_syllables_in_text(text)
print(f"Words: {result['words']}")
print(f"Syllables: {result['syllables']}")
print(f"Avg per word: {result['avg_per_word']}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.