Aller au contenu
🛠️ToolsShed

Haiku Checker

Vérifier si votre texte suit la structure haïku traditionnelle 5-7-5 syllabes avec analyse par ligne.

À propos du Haïku

Un haïku est une forme de poésie japonaise avec trois lignes suivant un motif de 5-7-5 syllabes. Le compteur de syllabes utilise des heuristiques de groupes de voyelles en anglais et peut ne pas être 100 % précis pour tous les mots.

À propos de cet outil

Un vérificateur de haiku est un outil qui valide si votre texte suit la structure traditionnelle de 5-7-5 syllabes du haiku. Le haiku est une forme poétique japonaise ancienne connue pour sa brièveté et son élégance, et le compte de syllabes est fondamental à sa structure. Cet outil analyse chaque ligne indépendamment, compte les syllabes et fournit une rétroaction détaillée pour que vous puissiez voir exactement où votre composition correspond ou s'écarte du format classique.

Pour utiliser le vérificateur de haiku, collez simplement votre poème de trois lignes dans le champ de saisie et cliquez sur le bouton d'analyse. L'outil affichera le nombre de syllabes de chaque ligne et indiquera s'ils correspondent au motif 5-7-5. Ceci est particulièrement utile pour les écrivains apprenant la composition du haiku, les étudiants étudiant la poésie japonaise dans les cours de littérature, ou pour toute personne affinant son travail avant de le partager avec d'autres.

Questions Fréquentes

Implémentation du Code

import re

def count_syllables(word: str) -> int:
    """Count syllables in an English word using vowel-group heuristic."""
    word = word.lower().strip()
    word = re.sub(r"[^a-z]", "", word)
    if not word:
        return 0
    # Count vowel groups
    count = len(re.findall(r"[aeiouy]+", word))
    # Adjust for silent-e ending
    if word.endswith("e") and count > 1:
        count -= 1
    return max(1, count)

def count_line_syllables(line: str) -> int:
    words = re.findall(r"[a-zA-Z'-]+", line)
    return sum(count_syllables(w) for w in words)

def check_haiku(text: str) -> dict:
    lines = [l.strip() for l in text.strip().split("\n") if l.strip()]
    if len(lines) != 3:
        return {"valid": False, "error": f"Expected 3 lines, got {len(lines)}"}

    counts = [count_line_syllables(line) for line in lines]
    expected = [5, 7, 5]
    valid = counts == expected

    return {
        "valid": valid,
        "lines": [
            {"text": lines[i], "syllables": counts[i], "expected": expected[i]}
            for i in range(3)
        ],
    }

haiku = """
An old silent pond
A frog jumps into the pond
Splash! Silence again
"""

result = check_haiku(haiku)
print(f"Valid haiku: {result['valid']}")
for line in result["lines"]:
    status = "✓" if line["syllables"] == line["expected"] else "✗"
    print(f"  {status} {line['syllables']}/{line['expected']} syllables: {line['text']}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.