Hiyerarşik Özetleme
Aşamalı sıkıştırma uygulayın: bölümler → kısımlar → belge özeti.
Hiyerarşik Özetleme, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
Hiyerarşik Özetleme Nedir
Hiyerarşik özetleme, belgenin kendi yapısını yansıtır. Tüm parçalara eşit davranmak yerine içeriği düzey düzey sıkıştırır:
- Sayfalar → alt bölüm özetleri
- Alt bölümler → bölüm özetleri
- Bölümler → belge özeti
Her düzey, kendisinden aşağıdaki düzeyin sıkıştırılmış bir gösterimidir. İnsanların kitapları özetleme biçimi de budur — bölümleri okur, zihinsel özetler oluşturur ve ardından bunları birleştirirler.
Hiyerarşik Özetleme Ne Zaman Kullanılır
Hiyerarşik özetleme şu durumlar için doğru tercihtir:
- Kitaplar: Açık bölüm yapısına sahip 200'den fazla sayfalık kitaplar
- Araştırma makaleleri: özet, giriş, yöntemler, bulgular, tartışma
- Hukuki sözleşmeler: belirli başlıklara sahip bölümler (tanımlar, yükümlülükler, fesih)
- Teknik raporlar: yönetici özeti → bulgular → ekler
Kısa makaleler için gereğinden fazladır. Belgenin doğal bir ağaç yapısına sahip olduğu durumlarda özellikle etkilidir.
Belge Ağacı Yapısı
Belgeyi bir ağaç olarak modelleyin:
- Kök: son özet
- 1. düzey düğümleri: bölüm özetleri
- 2. düzey düğümleri: alt bölüm özetleri
- Yapraklar: ham sayfa veya parça metni
Özetleme aşağıdan yukarıya ilerler: yapraklar → 2. düzey → 1. düzey → kök. Her düğümün özeti yalnızca çocuklarının özetlerinden türetilir.
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class DocNode:
title: str
content: str = ''
summary: str = ''
children: List['DocNode'] = field(default_factory=list)
# Example: book with 3 chapters, each with 3 sections
book = DocNode(
title='My Book',
children=[
DocNode('Chapter 1', children=[
DocNode('Section 1.1', content='...raw text...'),
DocNode('Section 1.2', content='...raw text...'),
]),
DocNode('Chapter 2', children=[
DocNode('Section 2.1', content='...raw text...'),
])
]
)Aşağıdan Yukarıya Özetleme
Ağacı aşağıdan yukarıya dolaşın. Yaprak düğümler ham içeriklerinden özetlenir. İç düğümler çocuklarının özetlerinden özetlenir.
import openai
client = openai.OpenAI(api_key='sk-...')
def summarize_text(text, role='section'):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system',
'content': f'Summarize this {role} in 3-5 sentences.'},
{'role': 'user', 'content': text}
]
)
return resp.choices[0].message.content
def summarize_tree(node, depth=0):
role = ['document', 'chapter', 'section', 'page'][min(depth, 3)]
if not node.children:
node.summary = summarize_text(node.content, role)
else:
for child in node.children:
summarize_tree(child, depth + 1)
combined = '\n\n'.join(
f'{c.title}:\n{c.summary}' for c in node.children
)
node.summary = summarize_text(combined, role)
return node.summaryAşamalı Sıkıştırma
Aşamalı sıkıştırma, her düzeyin bilgi yoğunluğunu azaltması anlamına gelir. Pratik bir kural:
- Sayfa (2000 belirteç) → alt bölüm özeti (200 belirteç) — 10 kat sıkıştırma
- Alt bölüm özeti (200 belirteç) → bölüm özeti (100 belirteç) — 2 kat sıkıştırma
- Bölüm özetleri (5 × 100 belirteç) → belge (150 belirteç) — 3 kat sıkıştırma
Toplamda 10.000 belirteçlik bir belge, ana sav korunarak yaklaşık 150 belirtece sıkıştırılır. Her düzeyde modele sıkıştırma oranını korumasını isteyen bir istem verin.
PAGE_PROMPT = 'Summarize this page in 2-3 sentences (under 80 words).'
SECTION_PROMPT = 'Given these page summaries, write a section summary in 3-4 sentences (under 120 words).'
CHAPTER_PROMPT = 'Given these section summaries, write a chapter summary in 4-5 sentences (under 150 words).'
DOC_PROMPT = 'Given these chapter summaries, write an executive summary of the entire document (under 200 words).'Düzeyler Arasında Tutarlılığı Koruma
Hiyerarşik özetlemenin bir riski, aynı düzeydeki özetlerin birbiriyle çelişebilmesi veya birbirini tekrarlayabilmesidir; bu hatalar üst düzeylere çıktıkça birikir. Tutarlılığı koruma stratejileri:
- Modelin bağlamı bilmesi için isteme üst bölüm başlığını ekleyin
- Modelden önceki bölüm özetlerinde zaten belirtilen olguları tekrarlamamasını isteyin
- Son birleştirme aşamasında modelden tüm çelişkileri açıkça çözmesini isteyin
def summarize_sections_for_chapter(chapter_title, section_summaries):
content = '\n\n'.join(
f'Section: {s["title"]}\n{s["summary"]}'
for s in section_summaries
)
prompt = (
f'Chapter: {chapter_title}\n\n'
'Below are summaries of each section. '
'Write a unified chapter summary without repeating '
'the same facts from multiple sections.\n\n' + content
)
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}]
)
return resp.choices[0].message.contentAraştırma Makalesi Hiyerarşisi
Araştırma makaleleri doğal bir hiyerarşiye sahiptir: Özet → Giriş → Yöntemler → Bulgular → Tartışma → Sonuç. Her bölümün farklı bir rolü vardır; bu nedenle bölüme özgü istemler kullanın:
SECTION_PROMPTS = {
'abstract': 'Summarize the paper abstract: what problem, method, and result?',
'introduction': 'Summarize the introduction: what gap does the paper address?',
'methods': 'Summarize the methods: what approach was used?',
'results': 'Summarize the results: what were the key findings and metrics?',
'discussion': 'Summarize the discussion: what do the results mean?',
'conclusion': 'Summarize the conclusion and future work.'
}
def summarize_paper(sections_dict):
section_summaries = {}
for section, text in sections_dict.items():
prompt = SECTION_PROMPTS.get(section, 'Summarize this section.')
section_summaries[section] = call_llm(prompt, text)
return section_summariesHukuki Sözleşme Hiyerarşisi
Hukuki sözleşmeler bir hüküm hiyerarşisini izler: tanımlar → yükümlülükler → hukuki çözümler → fesih → uygulanacak hukuk. Hiyerarşik özetleme şunları korumalıdır:
- Kesin rakamlar (ödeme tutarları, son tarihler)
- Taraf adları (müşteri, tedarikçi, lisans veren)
- Koşullu ifadeler (olmadıkça, şu durum hariç, koşuluyla)
Modelden, özetlediği her sayısal tutarı veya koşullu ifadeyi içeren hükmü işaretlemesini isteyin; böylece bunlar yanlışlıkla atlanmaz.
LEGAL_PROMPT = '''Summarize this contract clause in plain English.
Preserve: all monetary amounts, dates, party names, and conditionals.
Flag any obligation with [OBLIGATION] and any amount with [AMOUNT].'''
def summarize_clause(clause_text):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': LEGAL_PROMPT},
{'role': 'user', 'content': clause_text}
]
)
return resp.choices[0].message.contentHiyerarşik Özetleri Depolama
Yalnızca kök özeti değil, özet ağacının tamamını depolayın. Bu şunları mümkün kılar:
- Ayrıntıya inme — bölüm özetini, ardından isteğe bağlı olarak alt bölüm özetini gösterme
- Getirme — kullanıcı sorgusunu yalnızca tam belgeye değil, alt bölüm özetlerine göre de eşleştirme
- Güncelleme — bir alt bölüm değiştiğinde ağacın yalnızca o dalını yeniden özetleme
import json
def tree_to_dict(node):
return {
'title': node.title,
'summary': node.summary,
'children': [tree_to_dict(c) for c in node.children]
}
def save_tree(node, path):
with open(path, 'w') as f:
json.dump(tree_to_dict(node), f, indent=2)
print(f'Saved summary tree to {path}')Artımlı Güncellemeler
Bir belge güncellendiğinde hiyerarşik yapı, artımlı yeniden özetlemeyi mümkün kılar. Yalnızca değiştirilen düğümü ve atalarını yeniden özetleyin — tüm kardeş dallar geçerliliğini korur.
Bölüm 3'ün gözden geçirildiği 10 bölümlük bir kitap için: bölüm 3'ün alt bölümlerini, ardından bölüm 3'ü ve son olarak kitabı yeniden özetleyin. Tüm düğümler yerine 3 düğümü yeniden hesaplayın.
def update_node(node, updated_child_title):
# Re-summarize the changed child
for child in node.children:
if child.title == updated_child_title:
summarize_tree(child) # re-summarize from leaves
break
# Re-summarize current node from updated children
combined = '\n\n'.join(
f'{c.title}:\n{c.summary}' for c in node.children
)
node.summary = summarize_text(combined)
return node.summaryDüz ve Hiyerarşik Yaklaşımların Karşılaştırılması
Düz eşleştirme-birleştirme ile hiyerarşik özetleme:
- Düz: daha basit, belge yapısını dikkate almaz, tekdüze belgeler (haber makaleleri) için daha iyidir
- Hiyerarşik: yapıya uyar, ayrıntıya inmeyi mümkün kılar, yapılandırılmış belgeler için daha tutarlıdır
Uygulamada ikisini birleştirin: her bölüm içinde çok sayıda sayfa için düz eşleştirme-birleştirme kullanın, ardından bölümler arasında hiyerarşik özetleme uygulayın. Gerçek dünyadaki belgeler için en sağlam yaklaşım budur.
Bilginizi Sınayın
Hiyerarşik özetlemede özetleme süreci belge ağacında hangi yönde ilerler?
Özet: Hiyerarşik Özetleme
Hiyerarşik özetleme, daha iyi sonuçlar için belge yapısını yansıtır:
- Belgeyi bir ağaç olarak modelleyin: sayfalar → alt bölümler → bölümler → belge
- Aşağıdan yukarıya özetleyin: önce yapraklar, en son kök
- Tutarlılığı korumak için her düzeyde aşamalı sıkıştırma uygulayın
- Açık bir hiyerarşik yapıya sahip kitaplar, araştırma makaleleri ve hukuki sözleşmeler için en uygunudur
- Ayrıntıya inerek bilgi getirmeyi ve artımlı güncellemeleri mümkün kılmak için ağacın tamamını depolayın
Sonraki ders: örtüşme ve devam eden özetlerle parçalar arasındaki bağlamı koruma.
Sıkça Sorulan Sorular
“Hiyerarşik Özetleme” dersi ücretsiz mi?
Evet — “Hiyerarşik Özetleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Hiyerarşik Özetleme” dersinde ne öğreneceğim?
Aşamalı sıkıştırma uygulayın: bölümler → kısımlar → belge özeti. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Hiyerarşik Özetleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Uzun Metinler için Parçalama Stratejileri
- Map-Reduce Özetleme Kalıbı
- Hiyerarşik Özetleme
- Parçalar Arasında Bağlamı Koruma