İçeriğe geç
🛠️ToolsShed

Haiku Checker

Metininiz 5-7-5 hece haiku yapısını satır başına analizle takip edip etmediğini kontrol edin.

Haiku Hakkında

Haiku, 5-7-5 hece düzenini izleyen üç satırdan oluşan Japon şiir biçimidir. Hece sayacı İngilizce ünlü grubu sezişsel yöntemlerini kullanır ve tüm kelimeler için yüzde 100 doğru olmayabilir.

Bu araç hakkında

Bir haiku kontrol aracı, metninizin geleneksel 5-7-5 hece yapısını takip edip etmediğini doğrulayan bir yardımcı programdır. Haiku, kısa ve zarif yapısıyla bilinen eski bir Japon şiir biçimidir ve hece sayısı bu yapının temelini oluşturur. Bu araç her satırı bağımsız olarak analiz eder, heceleri sayar ve ayrıntılı geri bildirim sağlar; böylece bileşiminizin klasik biçimle ne kadar uyumlu olduğunu tam olarak görebilirsiniz.

Haiku kontrol aracını kullanmak için, üç satırlık şiirinizi giriş alanına yapıştırın ve analiz et düğmesini tıklayın. Araç her satırın hece sayısını gösterecek ve 5-7-5 deseniyle eşleşip eşleşmediğini belirtecektir. Bu, haiku yazma öğrenen yazarlar, edebiyat derslerinde Japon şiirini inceleyen öğrenciler veya başkalarıyla paylaşmadan önce çalışmalarını geliştirmek isteyen herkes için özellikle yararlıdır.

Sıkça Sorulan Sorular

Kod Uygulaması

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.