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.