Zum Inhalt springen
🛠️ToolsShed

Haiku Checker

Überprüfe, ob dein Text der traditionellen Haiku-Struktur mit 5-7-5-Silben pro Zeile folgt.

Über Haiku

Ein Haiku ist eine Form der japanischen Poesie mit drei Zeilen nach einem 5-7-5-Silbenmuster. Der Silbenzähler verwendet englische Vokalgruppen-Heuristiken und ist möglicherweise nicht 100 % genau für alle Wörter.

Über dieses Tool

Ein Haiku-Checker ist ein Werkzeug, das validiert, ob Ihr Text die traditionelle 5-7-5-Silbenstruktur des Haiku befolgt. Haiku ist eine alte japanische Gedichtform, die für ihre Kürze und Eleganz bekannt ist, und die Silbenzahl ist grundlegend für seine Struktur. Dieses Werkzeug analysiert jede Zeile unabhängig, zählt die Silben und bietet detailliertes Feedback, sodass Sie genau sehen können, wo Ihre Komposition dem klassischen Format entspricht oder davon abweicht.

Um den Haiku-Checker zu verwenden, fügen Sie einfach Ihr dreieiliges Gedicht in das Eingabefeld ein und klicken Sie auf die Schaltfläche analysieren. Das Werkzeug zeigt die Silbenzahl jeder Zeile an und gibt an, ob sie dem 5-7-5-Muster entsprechen. Dies ist besonders nützlich für Schriftsteller, die Haiku-Komposition lernen, Schüler, die japanische Poesie in Literaturkursen studieren, oder alle, die ihre Arbeit vor dem Teilen mit anderen verfeinern möchten.

Häufig gestellte Fragen

Code-Implementierung

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.