in tseval/text.py [0:0]
def count_syllables_in_word(word):
word = _normalize_word(word)
if not word:
return 0
# Check for a cached syllable count
count = fallback_cache.get(word, -1)
if count > 0:
return count
# Remove final silent 'e'
if word[-1] == "e":
word = word[:-1]
# Count vowel groups
count = 0
prev_was_vowel = 0
for c in word:
is_vowel = c in ("a", "e", "i", "o", "u", "y")
if is_vowel and not prev_was_vowel:
count += 1
prev_was_vowel = is_vowel
# Add & subtract syllables
for r in fallback_addsyl:
if r.search(word):
count += 1
for r in fallback_subsyl:
if r.search(word):
count -= 1
# Cache the syllable count
fallback_cache[word] = count
return count