0Pricing
AI Engineering Academy · Ders

Yapılandırılmamış Metinden Veri Çıkarma

E-postalar, makbuzlar ve makaleler gibi ham metinleri okuyup türleri, varsayılan değerleri ve doğrulamayı içeren yapılandırılmış alanlar döndüren bir bilgi çıkarma işlem hattı oluşturun.

Yapılandırılmamış Metinden Veri Çıkarma, CoddyKit'te ücretsiz bir AI Engineering Academy 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 Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Bilgi Çıkarma Problemi

Kuruluşlar yapılandırılmamış metinler içinde boğuluyor: e-postalar, destek talepleri, sözleşmeler, faturalar, haber makaleleri, tıbbi notlar ve sosyal medya gönderileri. Değerli yapılandırılmış veriler bu metinlerin içinde gömülü durumda; ancak bunları elle çıkarmak yavaş, pahalı ve hataya açıktır. Yapılandırılmış çıktılara sahip LLM'ler bu durumu değiştiriyor: Her türlü metni okuyup ilgili alanlarla önceden tanımlanmış bir şemayı, makul bir doğrulukla ve büyük ölçekte doldurabiliyorlar.

Bilgi çıkarma (IE), yapılandırılmamış metinlerden yapılandırılmış bilgileri otomatik olarak belirleme ve çıkarma sürecidir. LLM tabanlı IE, önceki kural tabanlı veya klasik NLP yaklaşımlarından çok daha iyi performans gösterir; çünkü LLM'ler her varyasyon için elle hazırlanmış düzenli ifade kalıplarına ihtiyaç duymadan bağlamı, eş anlamlılığı ve örtük bilgileri anlayabilir.

Yaygın Bilgi Çıkarma Kullanım Alanları

Bilgi çıkarma, birçok değerli iş uygulamasına güç verir:

  • Fatura işleme: Borç hesapları otomasyonunda kullanılmak üzere PDF faturalarından satıcıyı, satır kalemlerini, tutarları ve vade tarihlerini çıkarma
  • Sözleşme analizi: Hukuki belgelerden tarafları, yürürlük tarihlerini, ödeme koşullarını ve fesih maddelerini çıkarma
  • Özgeçmiş ayrıştırma: ATS sistemleri için özgeçmişlerden becerileri, deneyimi, eğitimi ve iletişim bilgilerini çıkarma
  • Destek taleplerini yönlendirme: Talepleri otomatik olarak yönlendirmek için kategoriyi, önem derecesini, etkilenen ürünü ve müşteri seviyesini çıkarma
  • Haber izleme: Rekabet istihbaratı için haber makalelerinden varlıkları, olayları ve duygu durumlarını çıkarma

E-posta Bilgisi Çıkarma İş Akışı Oluşturma

Müşteri e-postalarını okuyup eyleme geçirilebilir yapılandırılmış veriler çıkaran pratik bir bilgi çıkarma iş akışı oluşturalım. İş akışı, her e-postadan tam olarak ne istediğimizi tanımlamak için bir Pydantic şeması kullanır ve ardından e-postaları toplu olarak işler.

import openai
from pydantic import BaseModel
from typing import List, Optional
from enum import Enum

client = openai.OpenAI()

class Priority(str, Enum):
    urgent = 'urgent'
    high = 'high'
    normal = 'normal'
    low = 'low'

class EmailExtraction(BaseModel):
    subject_summary: str
    sender_intent: str
    product_mentioned: Optional[str]
    issue_category: str  # billing / technical / general / feedback
    priority: Priority
    action_required: bool
    action_description: Optional[str]
    customer_sentiment: str  # positive / negative / neutral / frustrated

def extract_from_email(email_body: str) -> EmailExtraction:
    result = client.beta.chat.completions.parse(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'You are an expert at analyzing customer emails and extracting structured information for a support team.'},
            {'role': 'user', 'content': f'Analyze this customer email:\n\n{email_body}'}
        ],
        response_format=EmailExtraction
    )
    return result.choices[0].message.parsed

LLM'lerle Adlandırılmış Varlık Tanıma

Adlandırılmış Varlık Tanıma (NER), klasik bir IE görevidir: Metin içindeki adlandırılmış varlıkları (kişiler, kuruluşlar, konumlar, tarihler ve parasal tutarlar) belirlemek ve sınıflandırmak. LLM'ler NER sürecini büyük ölçüde basitleştirir; çünkü istediğiniz varlıkları yalnızca açıklamanız yeterlidir ve özel olarak eğitilmiş bir NER modeline ihtiyaç duymadan bunları çıkarabilirler.

import openai
from pydantic import BaseModel
from typing import List, Optional

client = openai.OpenAI()

class NamedEntity(BaseModel):
    text: str       # The exact text as it appears
    entity_type: str  # PERSON / ORG / LOCATION / DATE / MONEY / PRODUCT
    normalized: Optional[str]  # Standardized form where applicable

class NERResult(BaseModel):
    entities: List[NamedEntity]

text = '''
Apple Inc. CEO Tim Cook announced yesterday that the company will invest $1.2 billion
in a new manufacturing facility in Austin, Texas, expected to open in Q3 2026.
'''

result = client.beta.chat.completions.parse(
    model='gpt-4o-mini',
    messages=[
        {'role': 'system', 'content': 'Extract all named entities from the text. Classify each as PERSON, ORG, LOCATION, DATE, MONEY, or PRODUCT.'},
        {'role': 'user', 'content': text}
    ],
    response_format=NERResult
)
for entity in result.choices[0].message.parsed.entities:
    print(f'[{entity.entity_type}] {entity.text}')

Belgelerden Büyük Ölçekte Bilgi Çıkarma

Binlerce belgeyi işleyen üretim bilgi çıkarma iş akışlarında asenkron işleme ve hız sınırı yönetimi gerekir. Tipik bir yaklaşım, API'nin hız sınırlarına uyarken belgeleri paralel olarak işlemek için asyncio ile bir Semaphore kullanır.

import asyncio
import openai
from pydantic import BaseModel
from typing import List, Optional

async_client = openai.AsyncOpenAI()

class InvoiceExtraction(BaseModel):
    vendor: str
    total_amount: Optional[float]
    currency: str
    invoice_date: Optional[str]

async def extract_invoice(doc_text: str, semaphore: asyncio.Semaphore) -> InvoiceExtraction:
    async with semaphore:  # Limit concurrent requests
        result = await async_client.beta.chat.completions.parse(
            model='gpt-4o-mini',
            messages=[
                {'role': 'system', 'content': 'Extract invoice data.'},
                {'role': 'user', 'content': doc_text}
            ],
            response_format=InvoiceExtraction
        )
        return result.choices[0].message.parsed

async def process_invoices(documents: List[str]):
    sem = asyncio.Semaphore(5)  # Max 5 concurrent requests
    tasks = [extract_invoice(doc, sem) for doc in documents]
    return await asyncio.gather(*tasks, return_exceptions=True)

# results = asyncio.run(process_invoices(invoice_texts))
print('Async pipeline defined - handles rate limits via semaphore')

Örtük ve Çıkarımsal Bilgileri Ele Alma

LLM'ler yalnızca açıkça belirtilen bilgileri değil, çıkarımsal veya örtük bilgileri de çıkarabilir. Bir incelemede "Bunu bir aydır her gün kullanıyorum ve hâlâ kusursuz çalışıyor" deniyorsa model, "dayanıklılık" kelimesi hiç geçmese bile dayanıklılığı olumlu bir özellik olarak çıkarabilir. Bu, yalnızca açıkça mevcut olanı bulabilen düzenli ifade tabanlı bilgi çıkarmaya göre büyük bir avantajdır.

Ancak bu güç beraberinde risk de getirir: Model, gerçekler yerine tahminlerle alanları doldurarak gereğinden fazla çıkarım yapabilir. Önemli sonuçlar doğurabilecek bilgi çıkarma işlemlerinde (hukuki, finansal ve tıbbi işlemler) şemanıza bir confidence alanı ekleyin ve modelden kesinliğini derecelendirmesini isteyin; düşük güvenli çıkarımları insan incelemesi için işaretleyin.

Bilgi Çıkarma İstemlerinin Tasarımı

Bilgi çıkarmanın kalitesi büyük ölçüde istem tasarımınıza bağlıdır. Bilgi çıkarma istemleri için temel ilkeler:

  • Belirsiz alanları tanımlayın: "Tarih" fatura tarihi, vade tarihi veya teslim alınma tarihi anlamına gelebiliyorsa hangisini istediğinizi tam olarak belirtin
  • Alışılmadık biçimler için örnekler sağlayın: "Fiyat için yalnızca sayısal değeri döndürün; örneğin $29.99 değil, 29.99"
  • Normalleştirmeyi ele alın: "Ülke adlarını ISO 3166-1 alpha-2 kodlarına normalleştirin"
  • Bilgi çıkarma kaynağını belirtin: "E-posta gövdesinden değil, yalnızca konu satırından çıkarın"

Bilgi çıkarma istemini, insan veri girişi operatörü için hazırlanmış kesin bir şartname gibi düşünün — istemde bıraktığınız her belirsizlik, modelin tutarsız biçimde vereceği bir karar olur.

Karmaşık Belgeler İçin Çok Geçişli Bilgi Çıkarma

Bazı belgeler tek geçişte çıkarılamayacak kadar karmaşıktır; bunun nedeni tam şemanın büyük olması, farklı bölümlerin farklı uzmanlıklar gerektirmesi veya belge yapısının büyük ölçüde değişken olması olabilir. Çok geçişli bilgi çıkarma, görevi sıralı adımlara böler: önce belge türünü sınıflandırır, ardından o türe uygun şemayı çıkarır.

import openai
from pydantic import BaseModel
from typing import Optional

client = openai.OpenAI()

class DocumentType(BaseModel):
    doc_type: str  # invoice / contract / resume / report
    confidence: float

def classify_document(text: str) -> str:
    result = client.beta.chat.completions.parse(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'Classify the document type.'},
            {'role': 'user', 'content': text[:500]}  # Use only the beginning for classification
        ],
        response_format=DocumentType
    )
    return result.choices[0].message.parsed.doc_type

# Then route to the appropriate extraction schema
EXTRACTION_SCHEMAS = {
    'invoice': 'InvoiceSchema',  # Replace with actual Pydantic classes
    'contract': 'ContractSchema',
    'resume': 'ResumeSchema',
}

print('Multi-pass: classify first, then extract with the right schema')

Bilgi Çıkarma Sonrası Zenginleştirme

Çıkarılan verilerin ilk bilgi çıkarma işleminden sonra çoğu zaman zenginleştirilmesi gerekir: Çıkarılan şirket adlarını bir şirket veritabanına sorgu göndererek standart biçimlere dönüştürmek, çıkarılan posta kodunu sorgulayarak şehir ve eyalet bilgilerini doldurmak veya çıkarılan tarihleri standart bir biçime dönüştürmek gibi. Bu zenginleştirme adımı, LLM çağrısı sırasında değil, bilgi çıkarma işleminden sonra uygulama kodunuzda gerçekleştirilmelidir.

Bilgi çıkarma ile zenginleştirmeyi ayrı tutmak, iş akışını test etmeyi ve bakımını kolaylaştırır. Zenginleştirme mantığını bağımsız olarak birim testine tabi tutabilir ve zenginleştirme kodunuzu değiştirmeden bilgi çıkarma modelini değiştirebilirsiniz.

Bilgi Çıkarma Doğruluğunu Ölçme

Üretim bilgi çıkarma iş akışlarında doğruluğu etiketlenmiş bir test kümesine göre sistematik olarak ölçün. Temel ölçütler şunlardır:

  • Alan doğruluğu: Belge başına doğru çıkarılan alanların yüzdesi
  • Tam eşleşme: Alan değeri, gerçeği tam olarak eşleştirir
  • Normalleştirilmiş eşleşme: Normalleştirmeden sonra alan değeri eşleşir (ör. '$1,234.00' == '1234.0')
  • Yanlış pozitif oranı: Modelin boş olması gereken bir alanı ne sıklıkla çıkardığı
  • Yanlış negatif oranı: Modelin mevcut olan bir alan için ne sıklıkla boş değer döndürdüğü

Modelleri değiştirdiğinizde, istemleri güncellediğinizde veya iş akışınıza yeni belge kaynakları eklediğinizde bu değerlendirmeyi çalıştırın. Binlerce belge işlenirken küçük doğruluk düşüşleri bile önemli ticari etkilere zincirleme olarak yol açabilir.

Sürekli İyileştirme İçin Bilgi Çıkarma Günlükleri

Üretimdeki her bilgi çıkarma sonucu, iş akışınızı iyileştirebilecek bir veri noktasıdır. Her giriş belgesini, çıkarılan çıktıyı ve tüm doğrulama hatalarını bir veritabanına kaydedin. Yaygın başarısızlık örüntülerini belirlemek için üretim günlüklerinden düzenli aralıklarla örnekler alın: Modelin zorlandığı belirli belge biçimleri, boş olmaması gerektiği hâlde sıklıkla boş kalan alanlar veya istemin zaman içinde değiştiğini gösteren olağandışı değerler.

Bu günlük verileri, bir modeli bilgi çıkarma görevinize özel olarak ince ayarlamak isterseniz gelecekteki eğitim veri kümeniz hâline de gelir. Böylece yapılandırılmış bilgi çıkarma için genel amaçlı LLM'lere kıyasla daha yüksek doğruluklu ve daha düşük maliyetli bir alternatif elde edebilirsiniz.

Hızlı Kontrol

Bu dersteki Yapay Zekâ Mühendisliği kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Pydantic şemalarına sahip LLM'ler, yapılandırılmamış herhangi bir metin kaynağından yapılandırılmış verileri güvenilir biçimde çıkarır, Semaphore'larla asenkron işleme, hız sınırlarına uyarken binlerce belgenin toplu olarak çıkarılmasını sağlar ve çok geçişli bilgi çıkarma önce belgeleri sınıflandırır, ardından her tür için uygun şemayı uygular. Sırada, çıkarılan verilerin iş kurallarını karşılamadığı durumları ele almak için doğrulama ve otomatik yeniden deneme mantığı oluşturacağız.

Sıkça Sorulan Sorular

“Yapılandırılmamış Metinden Veri Çıkarma” dersi ücretsiz mi?

Evet — “Yapılandırılmamış Metinden Veri Çıkarma” 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 Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Yapılandırılmamış Metinden Veri Çıkarma” dersinde ne öğreneceğim?

E-postalar, makbuzlar ve makaleler gibi ham metinleri okuyup türleri, varsayılan değerleri ve doğrulamayı içeren yapılandırılmış alanlar döndüren bir bilgi çıkarma işlem hattı oluşturun. AI Engineering Academy 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 Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, 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.

“Yapılandırılmamış Metinden Veri Çıkarma” 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 Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy 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

  1. JSON Modu ve response_format
  2. Pydantic ile Yapılandırılmış Çıktılar
  3. Yapılandırılmamış Metinden Veri Çıkarma
  4. Hatalı Çıktıları Doğrulama ve Yeniden Deneme
← AI Engineering Academy Sayfasına Dön