Yapılandırılmamış metinden yapılandırılmış veriler ve ilişkiler çıkarmak için LangExtract’i kurmayı ve kullanmayı öğrenin; yaklaşımını geleneksel NLP kütüphaneleriyle karşılaştırın.
Metin belgelerinden yapılandırılmış veri çıkarmak, veri ekipleri için ciddi sorunlar yaratır. Biçimler değiştiğinde düzenli ifadeler bozulur, özel ayrıştırma kodu insanların kolayca yakaladığı bağlamı kaçırır ve veri kaynaklarınız değiştikçe bu çözümlerin sürekli yamalanması gerekir.
LangExtract bunu, metni insanlar gibi okuyabilen ve bilginin tam olarak nereden geldiğini izleyebilen yapay zeka modelleriyle çözer. Basit terimlerle ve birkaç örnekle hangi veriyi istediğinizi söylersiniz; o da bu bilgiyi anlama ve çıkarma işinin zor kısmını üstlenir.
Bu öğreticide, adlandırılmış varlık tanıma için LangExtract’i nasıl kuracağınızı, varlıklar arasındaki ilişkileri nasıl çıkaracağınızı, farklı yapay zeka sağlayıcılarıyla nasıl çalışacağınızı ve LangExtract’in yaklaşımını geleneksel NLP kütüphaneleriyle nasıl karşılaştıracağınızı adım adım açıklayacağım. Ayrıca çıkarım görevlerini tanımlamayı, eğitim örnekleri vermeyi ve yapılandırılmış sonuçları analiz iş akışlarınızda işlemeyi öğreneceksiniz.
LangExtract Nedir?
LangExtract dağınık metni yapay zekayla düzenli veriye dönüştüren bir Python kütüphanesidir. Eski metin işleme araçları bağlam karşısında şaşırır — örneğin “Apple” kelimesini teknoloji şirketinden söz ederken meyve sanabilir ya da “$500” ifadesini aslında bir çalışan kimliği iken fiyat olarak algılayabilir. Basit desen eşleştirme e-posta adreslerini yakalayabilir ama “[email protected]” güncel bir çalışan mı yoksa eski bir e-postada adı geçen biri mi, bunu ayırt edemez.
Bu bağlam ve doğruluk sorunlarını gidermek için LangExtract size şunları sunar:
Kaynak izleme — Her bir veri parçasının özgün metinde tam olarak nereden geldiğini gösterir
Birden çok yapay zeka modeli — OpenAI, Anthropic, Google ve Ollama üzerinden yerel modellerle çalışır
Akıllı parçalama — Büyük belgeleri parçalara böler ve aynı anda birden çok bölümde çalışır
Birden fazla deneme — Atlanan bilgileri yakalamak için aynı görevi birkaç kez çalıştırır
Görsel raporlar — Verinin kaynağını görmek için üzerine tıklayabildiğiniz HTML sayfaları üretir
Bu araçlar, metinden bilgi çıkarmaya bakış açınızı değiştirir. Kolayca kırılan karmaşık kurallar yazmak yerine, birkaç basit örnekle ne istediğinizi yapay zekaya söylersiniz. Yapay zeka metni bir insan gibi okur ve her şeyin kaynağını izler. Böylece, eskiden yüzlerce satır kod gerektirecek karmaşık bilgileri ve ilişkileri çıkarabilirsiniz.
LangExtract’i Ne Zaman Kullanmalısınız?
LangExtract, geleneksel NLP araçlarının iyi baş edemediği, özel bilgileri çıkarmanız gerektiğinde en iyi sonucu verir. Standart adlandırılmış varlık tanımanın yetersiz kaldığı, alanınıza özgü metinlerle çalışıyorsanız, LangExtract karmaşık kurallar yazmadan veya modelleri yeniden eğitmeden işletmeniz için önemli olanı tam olarak tanımlamanızı sağlar. Yalnızca tekil varlıkları bulmak değil, bağlamı ve bilgiler arasındaki ilişkileri anlamanız gerektiğinde özellikle kullanışlıdır.
LangExtract şu durumlarda iyi bir seçimdir:
Alana özgü varlıklar — Sektör terimleri, ürün adları veya önceden eğitilmiş modellerin tanımadığı özel kategoriler
Karmaşık ilişkiler — Kişileri rollerine ve iletişim bilgilerine bağlamak gibi birlikte gruplanması gereken bilgiler
Bağlama bağlı çıkarım — Aynı metnin çevresindeki bilgiye göre farklı anlamlar taşıyabildiği durumlar
Kaynak doğrulama ihtiyacı — Çıkarılan her bir verinin tam kaynağını izleme gereksinimi
Karma belge türleri — E-postalar, PDF’ler ve raporlar gibi farklı formatlar için esnek işleme yaklaşımları
Sınırlı ML uzmanlığı — Derin makine öğrenimi bilgisi olmadan güçlü çıkarım yapmak isteyen ekipler
Hazır kategoriler için temel adlandırılmış varlık tanıma gibi yerleşik NLP görevleriyle çalışıyorsanız, çok basit desenlerin son derece hızlı işlenmesine ihtiyaç duyuyorsanız veya harici API çağrılarını kesin olarak engellemeniz gerekiyorsa başka araçları değerlendirmelisiniz. Geleneksel kütüphaneler, örneğin spaCy yüksek hacimli işlemede standart NLP görevlerinde mükemmeldir; LangExtract ise kurulum karmaşıklığı düşük, akıllı ve özel çıkarım gerektiğinde öne çıkar.
LangExtract Kurulumu
Veri çıkarmaya başlamadan önce LangExtract’i kurmanız ve yapay zeka modellerine erişimi ayarlamanız gerekir. Kütüphane birden çok kurulum yöntemini destekler ve farklı yapay zeka sağlayıcılarıyla çalışır.
Kurulum
LangExtract’i pip veya uv ile kurun. OpenAI entegrasyonu için extras paketini kullanın:
# Using pip
pip install langextract[openai]# Using uv
uv add langextract[openai]Altyapı:
[openai] eklentisi OpenAI Python istemcisini içerir. Diğer sağlayıcılar için temel paketi kurabilir ve gerektikçe sağlayıcıya özel kütüphaneleri ekleyebilirsiniz.
API anahtarı kurulumu
LangExtract birkaç yapay zeka sağlayıcısıyla çalışır. API anahtarlarını ortam değişkenleri olarak ayarlayın:
# OpenAI (get your key from https://platform.openai.com/api-keys)exportOPENAI_API_KEY="your-openai-key-here"# Anthropic (get your key from https://console.anthropic.com/settings/keys) exportANTHROPIC_API_KEY="your-anthropic-key-here"# Google AI (get your key from https://aistudio.google.com/app/apikey)exportGOOGLE_API_KEY="your-google-key-here"Altyapı:
Yalnızca kullanmayı planladığınız sağlayıcılar için anahtarlara ihtiyacınız var. Ollama üzerinden yerel modeller için API anahtarı gerekmez — bilgisayarınıza Ollama’yı kurup çalıştırmanız yeterlidir.
Hızlı test
Kurulumunuzu basit bir testle doğrulayın:
import langextract as lx
import textwrap
# 1. Define the prompt and extraction rules
prompt = textwrap.dedent("""\
Extract characters, emotions, and relationships in order of appearance.
Use exact text for extractions. Do not paraphrase or overlap entities.
Provide meaningful attributes for each entity to add context.""")# 2. Provide a high-quality example to guide the model
examples =[
lx.data.ExampleData(
text="ROMEO. But soft! What light through yonder window breaks? It is the east, and Juliet is the sun.",
extractions=[
lx.data.Extraction(
extraction_class="character",
extraction_text="ROMEO",
attributes={"emotional_state":"wonder"},),],)]# The input text to be processed
input_text ="Lady Juliet gazed longingly at the stars, her heart aching for Romeo"# Run the extraction
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gpt-4o-mini",)print("Extraction successful!")Altyapı:
LangExtract’te Adlandırılmış Varlık Tanıma (NER) Yapma
Adlandırılmış Varlık Tanıma (NER), metin içinde şirket adları, kişiler ve konumlar gibi belirli bilgi parçalarını bulur ve sınıflandırır.
Geleneksel NER araçları “PERSON” veya “ORGANIZATION” gibi önceden tanımlanmış kategorilerle çalışır ancak çoğu zaman işletmeniz için önemli olan bağlama özgü varlıkları kaçırır. LangExtract, özel varlık türleri tanımlamanıza ve alanınıza özgü kalıpları tanıması için yapay zekayı yönlendirmenize olanak tanır.
Müşteri destek e-postalarından varlık çıkarmayı adım adım inceleyelim. Genel kategoriler yerine, biletleri önceliklendirmeye yardımcı olan şikayet türleri, ürün adları ve çözüm zaman dilimleri gibi desteğe özgü varlıkları belirleyeceğiz.
Çıkarım görevini tanımlama
İlk adım, neyi çıkarmak istediğinizi net bir komutla (prompt) tarif etmektir. Bu komut, bir insan analiste verilen talimatlar gibidir — ne kadar belirgin olursanız, o kadar iyi sonuç alırsınız:
import langextract as lx
import textwrap
# Define what we want to extract from support emails
prompt = textwrap.dedent("""
Extract customer support entities from email text.
Focus on actionable information that helps prioritize and route tickets.
Use exact text from the email - don't paraphrase or summarize.
Include helpful attributes that add context for support agents.
""")Altyapı:
textwrap.dedent() işlevi, çok satırlı dizgilerdeki fazla girintiyi kaldırır; böylece komutlarınız kod içinde okunabilir kalırken, yapay zekaya gönderildiğinde temiz biçimde iletilir. Aksi halde, yapay zeka kod girintilerinden kaynaklanan fazla boşlukları da görecektir.
Bu komut, yapay zekaya desteğe özgü bilgileri aramasını, metinden birebir alıntılar kullanmasını ve özniteliklerle bağlam eklemesini söyler. Önemli olan alanınızı (müşteri desteği) ve bilgiyi faydalı kılan unsurları (biletleri önceliklendirme ve yönlendirme) net olarak tanımlamaktır.
Çıkarım örnekleri sağlama
Örnekler, tam olarak ne istediğinizi ve sonuçların nasıl biçimlendirileceğini yapay zekaya öğretir. Her örnek, yapay zekaya bir metin parçası ve buradan çıkarılmasını istediğiniz varlıkları gösterir:
# Create examples that show the AI what to extract
examples =[
lx.data.ExampleData(
text="My laptop screen keeps flickering. I bought it 3 months ago and need this fixed urgently for my presentation tomorrow.",
extractions=[
lx.data.Extraction(
extraction_class="product",
extraction_text="laptop",
attributes={"issue":"screen flickering","urgency":"high"}),
lx.data.Extraction(
extraction_class="timeline",
extraction_text="3 months ago",
attributes={"context":"purchase_date"}),
lx.data.Extraction(
extraction_class="urgency_indicator",
extraction_text="urgently for my presentation tomorrow",
attributes={"priority":"high","deadline":"tomorrow"})])]Altyapı:
Her bir ExampleData nesnesi bir metin örneği ve Extraction nesneleri listesini içerir. Extraction nesneleri üç şeyi belirtir:
extraction_class: Varlık türü ("product" veya "timeline" gibi)
extraction_text: Özgün metinden alınan tam ifadeler
attributes: Varlığı daha iyi anlamaya yardımcı ek bağlam
Öznitelikler, LangExtract’i geleneksel NER’den ayıran noktadır. Sadece “laptop”u bulmak yerine “ekran titremesi” sorunu olduğunu yakalar ve yüksek öncelik olarak işaretleyebiliriz.
Çıkarımı çalıştırma
Artık komutunuzu ve örneklerinizi kullanarak yeni metin üzerinde çıkarımı çalıştırabilirsiniz. LangExtract, öğrendiklerini benzer varlıkları bulmak için uygular:
# Sample support email to analyze
support_email ="""
Subject: WiFi adapter not working after Windows update
Hi support team,
My USB WiFi adapter stopped working completely after yesterday's Windows update.
I've tried restarting my computer multiple times but no luck. This is blocking me
from working from home today. I have an important client call at 2 PM and really
need internet access. The adapter worked perfectly before the update.
Thanks,
Mike Chen
"""# Run the extraction
result = lx.extract(
text_or_documents=support_email,
prompt_description=prompt,
examples=examples,
model_id="gpt-4o-mini")print("Extraction completed successfully!")Altyapı:
lx.extract() işlevi metninizi alır, komut talimatlarını uygular ve çıkarıma örneklerle yön verir. Özgün metinde bulunan tüm varlıkları ve bunların tam konumlarını içeren bir sonuç nesnesi döndürür.
Farklı modelleri model_id parametresini değiştirerek deneyebilirsiniz. "claude-3-haiku" veya "gpt-4o" gibi modeller, metninizin karmaşıklığına ve gereksinimlerinize göre farklı sonuçlar verebilir.
LangExtract’te Çıkarılan Verilerle Çalışma
Çıkarım tamamlandığında LangExtract, bulunan tüm varlıkları tam konumları ve öznitelikleriyle içeren bir sonuç nesnesi döndürür. Asıl güç, bu yapılandırılmış veriye nasıl erişip analiz edeceğiniz ve paylaşacağınızda yatar.
Çıkarılan varlıklara erişme
Sonuç nesnesi, bulunan tüm varlıkları extractions özelliğinde saklar. Her çıkarım; varlık metnini, türünü, özgün belgedeki konumunu ve varsa özniteliklerini içerir:
# Look at all extracted entitiesfor extraction in result.extractions:print(f"Type: {extraction.extraction_class}")print(f"Text: '{extraction.extraction_text}'")print(f"Location: chars {extraction.char_interval.start_pos}-{extraction.char_interval.end_pos}")print(f"Attributes: {extraction.attributes}")print("---")Altyapı:
Çıktı:
Type: product
Text: 'USB WiFi adapter'
Location: chars 78-94
Attributes: {'issue': 'not working after Windows update', 'previous_status': 'worked perfectly before the update'}
---
Type: timeline
Text: 'yesterday'
Location: chars 128-137
Attributes: {'context': 'Windows update'}
---
Type: urgency_indicator
Text: 'blocking me from working from home today'
Location: chars 227-268
Attributes: {'priority': 'high', 'context': 'work from home'}
---
Type: urgency_indicator
Text: 'important client call at 2 PM'
Location: chars 280-309
Attributes: {'priority': 'high', 'deadline': '2 PM today'}
---Altyapı:
Her çıkarım nesnesi, özgün metindeki başlangıç ve bitiş konumlarını gösteren char_interval ile bilginin kaynağını tam olarak izler. Bu kaynak takibi, sonuçları doğrulamanıza ve bağlamı anlamanıza olanak tanır.
Varlık kalıplarını analiz etme
Verilerinizdeki kalıpları anlamak için varlıkları gruplayıp sayabilirsiniz:
from collections import Counter
# Count different entity types
entity_types = Counter(e.extraction_class for e in result.extractions)print("Entity breakdown:")for entity_type, count in entity_types.items():
percentage =(count /len(result.extractions))*100print(f" {entity_type}: {count} entities ({percentage:.1f}%)")# Find high-priority support tickets
urgent_entities =[
e for e in result.extractions
if e.extraction_class =="urgency_indicator"and e.attributes.get("priority")=="high"]print(f"\nFound {len(urgent_entities)} high-priority indicators")Altyapı:
Bu analiz, hangi ürün türlerinin en çok destek bileti ürettiği veya kaç acil istek aldığınız gibi kalıpları hızla görmenize yardımcı olur.
Çıkarım sonuçlarını kaydetme
LangExtract, sonuçları her satırda bir belge olacak şekilde JSONL (JSON Lines) formatında kaydeder. Bu format veri işleme araçlarıyla iyi çalışır ve birden çok çıkarımın sonuçlarını birleştirmeyi kolaylaştırır:
# Save results to a JSONL file
lx.io.save_annotated_documents([result],
output_name="support_ticket_extractions.jsonl",
output_dir=".")Altyapı:
JSONL, her belgeyi ayrı bir satırda tam bir JSON nesnesi olarak saklar. Tek bir büyük dizi içeren normal JSON dosyalarının aksine JSONL dosyaları satır satır işlenebilir; bu da onları büyük veri kümeleri için ideal kılar. Bu dosyaları herhangi bir metin düzenleyicide açabilir veya pandas gibi veri analizi araçlarına yükleyebilirsiniz.
Etkileşimli HTML görselleştirmeleri oluşturma
HTML görselleştirme, LangExtract’in gerçekten öne çıktığı yerdir. Özgün metindeki çıkarılmış varlıkları vurgulayan ve sonuçlar arasında tıklayarak gezmenizi sağlayan etkileşimli bir rapor oluşturur:
# Generate interactive HTML visualization
html_content = lx.visualize("support_ticket_extractions.jsonl")# Save the HTML filewithopen("support_analysis.html","w")as f:ifhasattr(html_content,"data"):
f.write(html_content.data)# For Jupyter notebookselse:
f.write(html_content)# For regular Python scriptsprint("HTML visualization saved as 'support_analysis.html'")Altyapı:
Çıktı:
HTML visualization saved as 'support_analysis.html'Altyapı:
HTML görselleştirme, her varlık türü için renk kodlu vurgularla özgün metninizi gösterir. Vurgulanan metne tıklayarak çıkarılmış öznitelikleri görebilir, denetimleri kullanarak varlıklar arasında gezinebilir ve yapay zekanın önemli bilgileri doğru tanımladığını doğrulayabilirsiniz. Bu, sonuçları nokta atışı kontrol etmeyi ve çıkarım hattınıza güven oluşturmayı kolaylaştırır.
Görselleştirme; her varlık türünü gösteren bir lejant, varlıklar arasında gezinme denetimleri ve her çıkarım için ayrıntılı öznitelik bilgilerini içerir. Bu etkileşimli yaklaşım, ham JSON verisine bakmaya kıyasla sonuçlarınızı anlamayı ve doğrulamayı çok daha kolay hale getirir.
LangExtract’te İlişki Çıkarımı
Çıkardığımız müşteri destek varlıkları tekil olarak işe yarar, ancak tam resmi vermez. Bir müşteri “2021 model MacBook Pro’ mda pil sorunları var” dediğinde, ürünün, model yılının ve sorunun tek bir destek vakasına ait olduğunu anlamanız gerekir. Bu parçaları ayrı ayrı bulmak işe yaramaz — aralarındaki ilişkilere ihtiyaç vardır.
Geleneksel NLP bunu zayıf yönetir çünkü her varlığı yalıtılmış bilgi olarak ele alır. “MacBook Pro”, “2021” ve “pil sorunları”nı ayrı varlıklar olarak çıkarabilirsiniz; ancak hangi detayın hangi ürünle ilişkili olduğunu bulmak için karmaşık kurallar gerekir. Aynı metinde birden fazla ürün veya müşteri olduğunda bu yaklaşım hızla çöker.
LangExtract, varlıkları sonradan bağlamaya çalışmak yerine, ilk geçişte ilişkileri de çıkararak bunu çözer. Paylaşılan öznitelikleri kullanarak ilgili bilgileri gruplayabilir ve yine de her bir parçanın özgün metindeki kaynağını tam olarak izleyebilirsiniz. İnsanları rollerine, departmanlarına ve iletişim bilgilerine bağlamamız gereken İK belgelerinden çalışan bilgisi çıkarmayı birlikte ele alalım.
İlişki çıkarımını ayarlama
Bu örnekte, kişi başına birden fazla detayın bağlanması gereken şirket duyurularından çalışan bilgisi çıkaracağız:
import langextract as lx
import textwrap
# Define relationship extraction prompt
prompt = textwrap.dedent("""
Extract employee information from company announcements.
Group related details about each person using employee_group attributes.
Connect names, titles, departments, and contact info for each employee.
Use exact text from the announcement - don't paraphrase.
""")# Create examples showing how to group related information
examples =[
lx.data.ExampleData(
text="Sarah Johnson, our new Marketing Director, will lead the digital campaigns team. You can reach Sarah at [email protected] for any marketing questions.",
extractions=[
lx.data.Extraction(
extraction_class="person",
extraction_text="Sarah Johnson",
attributes={"employee_group":"Sarah Johnson"}),
lx.data.Extraction(
extraction_class="job_title",
extraction_text="Marketing Director",
attributes={"employee_group":"Sarah Johnson"}),
lx.data.Extraction(
extraction_class="department",
extraction_text="digital campaigns team",
attributes={"employee_group":"Sarah Johnson"}),
lx.data.Extraction(
extraction_class="contact",
extraction_text="[email protected]",
attributes={"employee_group":"Sarah Johnson","type":"email"})])]Altyapı:
employee_group özniteliği bir bağlantı sistemi gibi çalışır — aynı employee_group değerine sahip tüm varlıklar aynı kişiye aittir. Bu sayede, her bir parçanın özgün metindeki kaynağını izlemeye devam ederek, çok parçalı karmaşık bilgileri çıkarabilirsiniz.
İlişki çıkarımını çalıştırma
Şimdi birden çok çalışanı içeren bir şirket duyurusundan çıkarım yapalım:
# Sample HR announcement with multiple employees
hr_announcement ="""
We're excited to announce two new hires joining our team this month.
Mike Chen joins us as Senior Software Engineer in our Backend Development group. Mike brings 8 years of Python experience and will focus on API architecture. Please welcome Mike - he'll be working from our Seattle office and you can reach him at [email protected].
Additionally, Lisa Rodriguez starts as Product Manager for our Mobile Apps division. Lisa previously worked at TechStart Inc and has extensive experience with user research. Her office phone is 555-0199 and email is [email protected].
"""# Extract relationships
result = lx.extract(
text_or_documents=hr_announcement,
prompt_description=prompt,
examples=examples,
model_id="gpt-4o-mini")print(f"Extracted {len(result.extractions)} entities")Altyapı:
Çıkardıktan sonra, her çalışan için tam bilgiyi görmek üzere ilgili varlıkları gruplayabilirsiniz. Bu, dağınık varlıkları mantıksal gruplara yeniden düzenlemek için biraz Python kodu gerektirir:
from collections import defaultdict
# Group entities by employee_group
employee_groups = defaultdict(list)for extraction in result.extractions:
group_id = extraction.attributes.get("employee_group")if group_id:
employee_groups[group_id].append(extraction)# Print organized employee informationfor employee, details in employee_groups.items():print(f"\n=== {employee} ===")for detail in details:print(f"{detail.extraction_class}: {detail.extraction_text}")if detail.attributes.get("type"):print(f" Type: {detail.attributes['type']}")Altyapı:
Çıktı:
=== Mike Chen ===
person: Mike Chen
job_title: Senior Software Engineer
department: Backend Development group
contact: [email protected]
Type: email
contact: Seattle office
Type: location
=== Lisa Rodriguez ===
person: Lisa Rodriguez
job_title: Product Manager
department: Mobile Apps division
contact: [email protected]
Type: email
contact: 555-0199
Type: phoneAltyapı:
Bu kod adım adım şunları yapar:
defaultdict(list) her yeni girdinin otomatik olarak boş listeyle başladığı bir sözlük oluşturur
extraction.attributes.get("employee_group") her varlığın özniteliklerinden grup kimliğini güvenle alır, yoksa None döner
employee_groups[group_id].append(extraction) her varlığı kendi grubunun listesine ekler
İç içe döngüler daha sonra her grubun tamamlanmış bilgisini, çalışan bazında yazdırır
defaultdict, eksik girdileri otomatik oluşturan bir Python koleksiyonudur. employee_groups["Mike Chen"] anahtarına ilk kez eriştiğinizde, o çalışan için otomatik olarak boş bir liste oluşturur. Böylece her çalışan sözlükte var mı diye kontrol etmenize gerek kalmaz.
Bu gruplama yaklaşımı, özgün metindeki dağınık bilgilerden tam çalışan profilleri oluşturmanızı sağlar ve her veri parçasının tam kaynak konumunu korur.
İlişki görselleştirmeleri oluşturma
HTML görselleştirme, ilişki verileriyle çok daha değerli hale gelir; hem tekil varlıkları hem de bağlantılarını gösterir:
# Save the relationship extraction results
lx.io.save_annotated_documents([result],
output_name="employee_relationships.jsonl",
output_dir=".")# Generate HTML visualization showing relationships
html_content = lx.visualize("employee_relationships.jsonl")withopen("employee_relationships.html","w")as f:ifhasattr(html_content,"data"):
f.write(html_content.data)else:
f.write(html_content)print("Relationship visualization saved as 'employee_relationships.html'")Altyapı:
İlişki görselleştirmesi, farklı bilgi parçalarının nasıl bağlanarak tam çalışan kayıtlarını oluşturduğunu vurgular; böylece yapay zekanın özgün duyurudan ilgili detayları doğru biçimde tanımlayıp grupladığını kolayca doğrulayabilirsiniz.
LangExtract’i Farklı Model Sağlayıcılarıyla Kullanma
LangExtract, maliyet, hız ve doğruluk arasında farklı dengeler sunan birkaç yapay zeka sağlayıcısıyla çalışır. Google’ın Gemini modelleri, yerleşik şema desteğiyle kutudan çıktığı gibi çalışır ve çoğu çıkarım görevi için en kolay seçenektir. OpenAI’nin GPT modelleri sıklıkla daha yüksek doğruluk sağlar ancak ek yapılandırma gerektirir ve çıkarım başına daha pahalıdır.
# Using Google Gemini (default and recommended)
result_gemini = lx.extract(
text_or_documents=employee_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash"# Fast and cost-effective)# Using OpenAI GPT models
result_openai = lx.extract(
text_or_documents=employee_text,
prompt_description=prompt,
examples=examples,
model_id="gpt-4o-mini",
fence_output=True,# Required for OpenAI
use_schema_constraints=False# OpenAI doesn't support constraints)Altyapı:
Yerel işlem veya API maliyetlerinden kaçınmak istediğinizde, modelleri Ollama ile yerelde çalıştırabilirsiniz. Yerel modeller, daha basit çıkarım görevlerinde iyi çalışır ve verileriniz üzerinde tam kontrol sağlar; ancak genellikle daha yavaş çalışır ve bulut tabanlı seçeneklere göre daha az doğru olabilir.
# Using local models with Ollama (requires Ollama installed)
result_local = lx.extract(
text_or_documents=employee_text,
prompt_description=prompt,
examples=examples,
model_id="gemma2:2b",# Local Gemma model
model_url="http://localhost:11434",# Ollama server
fence_output=False,# Local models don't need fencing
use_schema_constraints=False# Disable constraints)Altyapı:
Üretime Ölçekleme
Gerçek dünyadaki metinler, temiz örneklerimize hiç benzemez. Karman çorman biçimlendirmeli 50 sayfalık raporlar, yazım hatalarıyla dolu müşteri e-postaları ve tuhaf boşluklara sahip PDF’ler alırsınız. Bazı belgelerde farklı bölümlere yayılmış binlerce kelime olabilir ve önemli bilgiler herhangi bir yerde gizli olabilir.
LangExtract bu dağınık durumları üç ana araçla yönetir: aynı anda birden fazla belgeyi çalıştırma, çıkarımı birkaç kez deneme ve büyük belgeleri daha küçük parçalara ayırma. Belgeleri teker teker işlemek yerine birçoğunu birlikte ele alabilir, böylece her şey çok daha hızlı olur.
# Settings for processing lots of real documents
result = lx.extract(
text_or_documents=document_batch,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash",
max_workers=20,# Work on many documents at once
extraction_passes=3,# Try extraction 3 times
max_char_buffer=1000# Break big text into small pieces)Altyapı:
max_workers ayarı, aynı anda kaç belgenin işleneceğini kontrol eder. Daha fazla işçi daha hızlı sonuç demektir; ancak daha fazla maliyet getirir ve API limitlerine takılabilirsiniz. 10–20 işçiyle başlayıp duruma göre ayarlayın.
Birden fazla çıkarım geçişi, ilk seferde kaçabilecek bilgileri bulmaya yardımcı olur. LangExtract çıkarımı birkaç kez çalıştırır ve sonuçları birleştirir. Bu, daha fazla detayı yakalar ama daha uzun sürer ve daha pahalıya mal olur.
Belgeleri parçalara ayırmak, uzun metinlerde yardımcı olur. max_char_buffer ayarı, büyük belgeleri yapay zekaya daha uygun daha küçük parçalara böler. Küçük parçalar (1000–2000 karakter) daha fazla detayı yakalar; büyük parçalar (3000–5000 karakter) daha çok bağlamı korur ama bazı şeyleri kaçırabilir.
# Different settings for different types of documents# For important documents that need careful review
detailed_result = lx.extract(
text_or_documents=legal_documents,
extraction_passes=5,# Try 5 times for accuracy
max_char_buffer=800,# Small chunks for detail
max_workers=10# Fewer workers to avoid limits)# For quick processing of simple documents
quick_result = lx.extract(
text_or_documents=email_batch,
extraction_passes=1,# Single pass for speed
max_char_buffer=3000,# Bigger chunks for speed
max_workers=30# More workers for faster results)Altyapı:
Üretim ortamı sorunlarla baş etmek demektir. Belgelerde kodlama hataları olabilir, ağ bağlantıları kesilebilir ve API’ler ne kadar hızlı işlem yapabileceğinize sınır koyabilir. Çıkarım işlerinizi izleyin, başarısız belgeler için yeniden deneme mantığı ekleyin ve farklı yapay zeka sağlayıcılarında ne kadar harcadığınızı takip edin.
Farklı belge türleriyle çalışırken, her tür için farklı çıkarım kuralları oluşturun. Hukuki sözleşmelerin, müşteri e-postalarından farklı komutlara ihtiyacı vardır. Finansal raporların, sosyal medya gönderilerinden farklı parça boyutlarına ihtiyacı vardır. Tek bir sistemin her şeyi yönetmesini zorlamak yerine her belge türü için ayrı hatlar oluşturun.
LangExtract ve Diğer NLP Kütüphaneleri
LangExtract, geleneksel NLP kütüphanelerine kıyasla farklı bir yaklaşım benimser. Çoğu kütüphane önceden eğitilmiş modellere veya kural tabanlı sistemlere dayanırken LangExtract, bağlamı ve anlamı insanlar gibi kavrayabilen Büyük Dil Modellerini kullanır. LangExtract’i ne zaman diğer seçeneklere tercih edeceğinizi anlamak için onu üç popüler Python NLP kütüphanesiyle karşılaştıralım.
spaCy
spaCy hız ve üretime hazır NLP görevlerine (tokenizasyon, sözcük türü etiketleme, adlandırılmış varlık tanıma gibi) odaklanır. Kişiler, kurumlar ve konumlar gibi yaygın varlıkları tanıyan önceden eğitilmiş modellerle gelir; ancak alanınıza özgü varlıklar veya özel kategorilerde zorlanır. spaCy, büyük miktarda metni hızlıca işler; ancak özel bilgi çıkarmak için modelleri yeniden eğitmeniz veya karmaşık kurallar yazmanız gerekir.
LangExtract, basit örnekler ve komutlarla özel varlıkları tanımlamanıza olanak tanıyarak bu karmaşıklığı ortadan kaldırır ve spaCy’nin izlemediği tam kaynak konumlarını da sağlar.
NLTK (Natural Language Toolkit)
NLTK (Natural Language Toolkit) eğitim ve araştırma için tasarlanmıştır; çok çeşitli NLP algoritmaları ve veri kümeleri sunar. Metin işleme için yapı taşları sağlar ancak tam çözümler inşa etmek ciddi programlama bilgisi gerektirir. NLTK, NLP kavramlarını öğrenmek ve prototiplemek için uygundur; ancak üretime hazır çıkarım sistemleri kurmak, birden çok NLTK bileşenini birleştirmeyi ve hatırı sayılır miktarda kod yazmayı gerektirir.
LangExtract, kutudan çıkar çıkmaz eksiksiz bir çözüm sunar — algoritma kodlamak yerine örneklerle ne istediğinizi tanımlarsınız ve ek geliştirme yapmadan etkileşimli görselleştirmeler elde edersiniz.
Transformers (Hugging Face)
Transformers (Hugging Face) adlandırılmış varlık tanıma ve soru yanıtlama dahil olmak üzere çeşitli NLP görevleri için son teknoloji dönüştürücü modellere erişim sunar. Güçlü olmakla birlikte, alanlara özgü kullanım için modelleri ince ayar yapmak makine öğrenimi uzmanlığı gerektirir ve yerleşik kaynak izleme veya ilişki çıkarımı sağlamaz. Model dağıtımını yönetmeniz, farklı model formatlarıyla başa çıkmanız ve kendi görselleştirme araçlarınızı oluşturmanız gerekir.
LangExtract, farklı yapay zeka modelleriyle çalışmanın karmaşıklığını soyutlar, kaynak izlemeyi otomatik olarak yönetir ve karmaşık model mimarilerine gerek kalmadan basit öznitelik gruplamayla ilişki çıkarımı sunar.
Özellik
LangExtract
spaCy
NLTK
Transformers
Kurulum karmaşıklığı
Basit komutlar + örnekler
Model eğitimi/kurallar
Algoritma kodlama
Model ince ayarı
Özel varlıklar
Doğal dil tanımı
Yeniden eğitim gerekir
Manuel kural yazımı
Model ince ayarı
Kaynak izleme
Tam konumlarla otomatik
Yok
Manuel uygulama
Manuel uygulama
İlişki çıkarımı
Yerleşik gruplama
Karmaşık kural yazımı
Manuel kodlama
Özel model geliştirme
Bağlam anlama
LLM destekli
Desen tabanlı
Kural tabanlı
Modele bağlı
Görselleştirme
Etkileşimli HTML
Harici araç gerekir
Harici araç gerekir
Harici araç gerekir
Öğrenme eğrisi
Düşük (örnek tabanlı)
Orta (NLP bilgisi)
Yüksek (algoritmalar)
Yüksek (ML uzmanlığı)
En uygun kullanım
Alana özgü çıkarım
Genel NLP hatları
Araştırma/öğrenme
Özel yapay zeka uygulamaları
Sonuç
LangExtract, metin çıkarımını karmaşık kurallar yazmaktan, verileriniz hakkında yapay zekayla konuşmaya dönüştürür. Basit komutlar ve örneklerle özel varlık çıkarımını kurmayı, ilişki çıkarımıyla ilgili bilgileri gruplamayı ve her bir veri parçasının tam kaynağını gösteren etkileşimli görselleştirmeler oluşturmayı öğrendiniz. Kütüphane, paralel işleme ve belge parçalama gibi üretim zorluklarını da ele alır; bu da onu dağınık, tutarsız metinlere sahip gerçek dünya uygulamaları için pratik kılar.
İster müşteri destek biletlerini işleyin, ister hukuki belgeleri analiz edin, ister akademik makalelerden içgörü çıkarın; LangExtract, geleneksel NLP kütüphanelerine göre daha sezgisel bir yaklaşım sunar. Model eğitimi veya kural yazmaya zaman harcamak yerine, belirli kullanım senaryonuz için hangi bilginin önemli olduğunu tanımlamaya odaklanabilirsiniz. Kendi metin verilerinizde basit çıkarımlarla başlayın, ardından bu öğreticide ele alınan üretim tekniklerini kullanarak ölçekleyin.
2 yılı aşkın deneyime sahip bir veri bilimi içerik üreticisiyim ve Medium’da en büyük takipçi kitlelerinden birine sahibim. Yapay zekâ ve makine öğrenimi üzerine, biraz da alaycı bir üslupla yazılmış, ayrıntılı makaleler kaleme almayı seviyorum; çünkü onları biraz daha az sıkıcı hale getirmek için bir şeyler yapmak gerekiyor. 130’un üzerinde makale ve bir de DataCamp kursu ürettim; bir diğeri de hazırlık aşamasında. İçeriklerim 5 milyondan fazla kişi tarafından görüldü; bunların 20 bini Medium ve LinkedIn’de takipçim oldu.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Windsurf ile kodlamanızı hızlandırın. Windsurf, daha hızlı geliştirme, hata ayıklama ve dağıtım yapmanıza yardımcı olan yapay zeka destekli bir IDE'dir.
Metin belgelerinden yapılandırılmış veri çıkarmak, veri ekipleri için ciddi sorunlar yaratır. Biçimler değiştiğinde düzenli ifadeler bozulur, özel ayrıştırma kodu insanların kolayca yakaladığı bağlamı kaçırır ve veri kaynaklarınız değiştikçe bu çözümlerin sürekli yamalanması gerekir.
LangExtract bunu, metni insanlar gibi okuyabilen ve bilginin tam olarak nereden geldiğini izleyebilen yapay zeka modelleriyle çözer. Basit terimlerle ve birkaç örnekle hangi veriyi istediğinizi söylersiniz; o da bu bilgiyi anlama ve çıkarma işinin zor kısmını üstlenir.
Bu öğreticide, adlandırılmış varlık tanıma için LangExtract’i nasıl kuracağınızı, varlıklar arasındaki ilişkileri nasıl çıkaracağınızı, farklı yapay zeka sağlayıcılarıyla nasıl çalışacağınızı ve LangExtract’in yaklaşımını geleneksel NLP kütüphaneleriyle nasıl karşılaştıracağınızı adım adım açıklayacağım. Ayrıca çıkarım görevlerini tanımlamayı, eğitim örnekleri vermeyi ve yapılandırılmış sonuçları analiz iş akışlarınızda işlemeyi öğreneceksiniz.
LangExtract Nedir?
LangExtract dağınık metni yapay zekayla düzenli veriye dönüştüren bir Python kütüphanesidir. Eski metin işleme araçları bağlam karşısında şaşırır — örneğin “Apple” kelimesini teknoloji şirketinden söz ederken meyve sanabilir ya da “$500” ifadesini aslında bir çalışan kimliği iken fiyat olarak algılayabilir. Basit desen eşleştirme e-posta adreslerini yakalayabilir ama “[email protected]” güncel bir çalışan mı yoksa eski bir e-postada adı geçen biri mi, bunu ayırt edemez.
Bu bağlam ve doğruluk sorunlarını gidermek için LangExtract size şunları sunar:
Kaynak: GitHub
Bu araçlar, metinden bilgi çıkarmaya bakış açınızı değiştirir. Kolayca kırılan karmaşık kurallar yazmak yerine, birkaç basit örnekle ne istediğinizi yapay zekaya söylersiniz. Yapay zeka metni bir insan gibi okur ve her şeyin kaynağını izler. Böylece, eskiden yüzlerce satır kod gerektirecek karmaşık bilgileri ve ilişkileri çıkarabilirsiniz.
LangExtract’i Ne Zaman Kullanmalısınız?
LangExtract, geleneksel NLP araçlarının iyi baş edemediği, özel bilgileri çıkarmanız gerektiğinde en iyi sonucu verir. Standart adlandırılmış varlık tanımanın yetersiz kaldığı, alanınıza özgü metinlerle çalışıyorsanız, LangExtract karmaşık kurallar yazmadan veya modelleri yeniden eğitmeden işletmeniz için önemli olanı tam olarak tanımlamanızı sağlar. Yalnızca tekil varlıkları bulmak değil, bağlamı ve bilgiler arasındaki ilişkileri anlamanız gerektiğinde özellikle kullanışlıdır.
LangExtract şu durumlarda iyi bir seçimdir:
Hazır kategoriler için temel adlandırılmış varlık tanıma gibi yerleşik NLP görevleriyle çalışıyorsanız, çok basit desenlerin son derece hızlı işlenmesine ihtiyaç duyuyorsanız veya harici API çağrılarını kesin olarak engellemeniz gerekiyorsa başka araçları değerlendirmelisiniz. Geleneksel kütüphaneler, örneğin spaCy yüksek hacimli işlemede standart NLP görevlerinde mükemmeldir; LangExtract ise kurulum karmaşıklığı düşük, akıllı ve özel çıkarım gerektiğinde öne çıkar.
LangExtract Kurulumu
Veri çıkarmaya başlamadan önce LangExtract’i kurmanız ve yapay zeka modellerine erişimi ayarlamanız gerekir. Kütüphane birden çok kurulum yöntemini destekler ve farklı yapay zeka sağlayıcılarıyla çalışır.
Kurulum
LangExtract’i pip veya uv ile kurun. OpenAI entegrasyonu için extras paketini kullanın:
[openai]eklentisi OpenAI Python istemcisini içerir. Diğer sağlayıcılar için temel paketi kurabilir ve gerektikçe sağlayıcıya özel kütüphaneleri ekleyebilirsiniz.API anahtarı kurulumu
LangExtract birkaç yapay zeka sağlayıcısıyla çalışır. API anahtarlarını ortam değişkenleri olarak ayarlayın:
Yalnızca kullanmayı planladığınız sağlayıcılar için anahtarlara ihtiyacınız var. Ollama üzerinden yerel modeller için API anahtarı gerekmez — bilgisayarınıza Ollama’yı kurup çalıştırmanız yeterlidir.
Hızlı test
Kurulumunuzu basit bir testle doğrulayın:
LangExtract’te Adlandırılmış Varlık Tanıma (NER) Yapma
Adlandırılmış Varlık Tanıma (NER), metin içinde şirket adları, kişiler ve konumlar gibi belirli bilgi parçalarını bulur ve sınıflandırır.
Geleneksel NER araçları “PERSON” veya “ORGANIZATION” gibi önceden tanımlanmış kategorilerle çalışır ancak çoğu zaman işletmeniz için önemli olan bağlama özgü varlıkları kaçırır. LangExtract, özel varlık türleri tanımlamanıza ve alanınıza özgü kalıpları tanıması için yapay zekayı yönlendirmenize olanak tanır.
Müşteri destek e-postalarından varlık çıkarmayı adım adım inceleyelim. Genel kategoriler yerine, biletleri önceliklendirmeye yardımcı olan şikayet türleri, ürün adları ve çözüm zaman dilimleri gibi desteğe özgü varlıkları belirleyeceğiz.
Çıkarım görevini tanımlama
İlk adım, neyi çıkarmak istediğinizi net bir komutla (prompt) tarif etmektir. Bu komut, bir insan analiste verilen talimatlar gibidir — ne kadar belirgin olursanız, o kadar iyi sonuç alırsınız:
textwrap.dedent()işlevi, çok satırlı dizgilerdeki fazla girintiyi kaldırır; böylece komutlarınız kod içinde okunabilir kalırken, yapay zekaya gönderildiğinde temiz biçimde iletilir. Aksi halde, yapay zeka kod girintilerinden kaynaklanan fazla boşlukları da görecektir.Bu komut, yapay zekaya desteğe özgü bilgileri aramasını, metinden birebir alıntılar kullanmasını ve özniteliklerle bağlam eklemesini söyler. Önemli olan alanınızı (müşteri desteği) ve bilgiyi faydalı kılan unsurları (biletleri önceliklendirme ve yönlendirme) net olarak tanımlamaktır.
Çıkarım örnekleri sağlama
Örnekler, tam olarak ne istediğinizi ve sonuçların nasıl biçimlendirileceğini yapay zekaya öğretir. Her örnek, yapay zekaya bir metin parçası ve buradan çıkarılmasını istediğiniz varlıkları gösterir:
Her bir
ExampleDatanesnesi bir metin örneği veExtractionnesneleri listesini içerir.Extractionnesneleri üç şeyi belirtir:extraction_class: Varlık türü ("product" veya "timeline" gibi)extraction_text: Özgün metinden alınan tam ifadelerattributes: Varlığı daha iyi anlamaya yardımcı ek bağlamÖznitelikler, LangExtract’i geleneksel NER’den ayıran noktadır. Sadece “laptop”u bulmak yerine “ekran titremesi” sorunu olduğunu yakalar ve yüksek öncelik olarak işaretleyebiliriz.
Çıkarımı çalıştırma
Artık komutunuzu ve örneklerinizi kullanarak yeni metin üzerinde çıkarımı çalıştırabilirsiniz. LangExtract, öğrendiklerini benzer varlıkları bulmak için uygular:
Çıktı:
lx.extract()işlevi metninizi alır, komut talimatlarını uygular ve çıkarıma örneklerle yön verir. Özgün metinde bulunan tüm varlıkları ve bunların tam konumlarını içeren bir sonuç nesnesi döndürür.Farklı modelleri
model_idparametresini değiştirerek deneyebilirsiniz."claude-3-haiku"veya"gpt-4o"gibi modeller, metninizin karmaşıklığına ve gereksinimlerinize göre farklı sonuçlar verebilir.LangExtract’te Çıkarılan Verilerle Çalışma
Çıkarım tamamlandığında LangExtract, bulunan tüm varlıkları tam konumları ve öznitelikleriyle içeren bir sonuç nesnesi döndürür. Asıl güç, bu yapılandırılmış veriye nasıl erişip analiz edeceğiniz ve paylaşacağınızda yatar.
Çıkarılan varlıklara erişme
Sonuç nesnesi, bulunan tüm varlıkları
extractionsözelliğinde saklar. Her çıkarım; varlık metnini, türünü, özgün belgedeki konumunu ve varsa özniteliklerini içerir:Çıktı:
Her çıkarım nesnesi, özgün metindeki başlangıç ve bitiş konumlarını gösteren
char_intervalile bilginin kaynağını tam olarak izler. Bu kaynak takibi, sonuçları doğrulamanıza ve bağlamı anlamanıza olanak tanır.Varlık kalıplarını analiz etme
Verilerinizdeki kalıpları anlamak için varlıkları gruplayıp sayabilirsiniz:
Çıktı:
Bu analiz, hangi ürün türlerinin en çok destek bileti ürettiği veya kaç acil istek aldığınız gibi kalıpları hızla görmenize yardımcı olur.
Çıkarım sonuçlarını kaydetme
LangExtract, sonuçları her satırda bir belge olacak şekilde JSONL (JSON Lines) formatında kaydeder. Bu format veri işleme araçlarıyla iyi çalışır ve birden çok çıkarımın sonuçlarını birleştirmeyi kolaylaştırır:
JSONL, her belgeyi ayrı bir satırda tam bir JSON nesnesi olarak saklar. Tek bir büyük dizi içeren normal JSON dosyalarının aksine JSONL dosyaları satır satır işlenebilir; bu da onları büyük veri kümeleri için ideal kılar. Bu dosyaları herhangi bir metin düzenleyicide açabilir veya pandas gibi veri analizi araçlarına yükleyebilirsiniz.
Etkileşimli HTML görselleştirmeleri oluşturma
HTML görselleştirme, LangExtract’in gerçekten öne çıktığı yerdir. Özgün metindeki çıkarılmış varlıkları vurgulayan ve sonuçlar arasında tıklayarak gezmenizi sağlayan etkileşimli bir rapor oluşturur:
Çıktı:
HTML görselleştirme, her varlık türü için renk kodlu vurgularla özgün metninizi gösterir. Vurgulanan metne tıklayarak çıkarılmış öznitelikleri görebilir, denetimleri kullanarak varlıklar arasında gezinebilir ve yapay zekanın önemli bilgileri doğru tanımladığını doğrulayabilirsiniz. Bu, sonuçları nokta atışı kontrol etmeyi ve çıkarım hattınıza güven oluşturmayı kolaylaştırır.
Görselleştirme; her varlık türünü gösteren bir lejant, varlıklar arasında gezinme denetimleri ve her çıkarım için ayrıntılı öznitelik bilgilerini içerir. Bu etkileşimli yaklaşım, ham JSON verisine bakmaya kıyasla sonuçlarınızı anlamayı ve doğrulamayı çok daha kolay hale getirir.
LangExtract’te İlişki Çıkarımı
Çıkardığımız müşteri destek varlıkları tekil olarak işe yarar, ancak tam resmi vermez. Bir müşteri “2021 model MacBook Pro’ mda pil sorunları var” dediğinde, ürünün, model yılının ve sorunun tek bir destek vakasına ait olduğunu anlamanız gerekir. Bu parçaları ayrı ayrı bulmak işe yaramaz — aralarındaki ilişkilere ihtiyaç vardır.
Geleneksel NLP bunu zayıf yönetir çünkü her varlığı yalıtılmış bilgi olarak ele alır. “MacBook Pro”, “2021” ve “pil sorunları”nı ayrı varlıklar olarak çıkarabilirsiniz; ancak hangi detayın hangi ürünle ilişkili olduğunu bulmak için karmaşık kurallar gerekir. Aynı metinde birden fazla ürün veya müşteri olduğunda bu yaklaşım hızla çöker.
LangExtract, varlıkları sonradan bağlamaya çalışmak yerine, ilk geçişte ilişkileri de çıkararak bunu çözer. Paylaşılan öznitelikleri kullanarak ilgili bilgileri gruplayabilir ve yine de her bir parçanın özgün metindeki kaynağını tam olarak izleyebilirsiniz. İnsanları rollerine, departmanlarına ve iletişim bilgilerine bağlamamız gereken İK belgelerinden çalışan bilgisi çıkarmayı birlikte ele alalım.
İlişki çıkarımını ayarlama
Bu örnekte, kişi başına birden fazla detayın bağlanması gereken şirket duyurularından çalışan bilgisi çıkaracağız:
employee_groupözniteliği bir bağlantı sistemi gibi çalışır — aynıemployee_groupdeğerine sahip tüm varlıklar aynı kişiye aittir. Bu sayede, her bir parçanın özgün metindeki kaynağını izlemeye devam ederek, çok parçalı karmaşık bilgileri çıkarabilirsiniz.İlişki çıkarımını çalıştırma
Şimdi birden çok çalışanı içeren bir şirket duyurusundan çıkarım yapalım:
Çıktı:
İlişki gruplarıyla çalışma
Çıkardıktan sonra, her çalışan için tam bilgiyi görmek üzere ilgili varlıkları gruplayabilirsiniz. Bu, dağınık varlıkları mantıksal gruplara yeniden düzenlemek için biraz Python kodu gerektirir:
Çıktı:
Bu kod adım adım şunları yapar:
defaultdict(list)her yeni girdinin otomatik olarak boş listeyle başladığı bir sözlük oluştururextraction.attributes.get("employee_group")her varlığın özniteliklerinden grup kimliğini güvenle alır, yoksa None döneremployee_groups[group_id].append(extraction)her varlığı kendi grubunun listesine eklerdefaultdict, eksik girdileri otomatik oluşturan bir Python koleksiyonudur.employee_groups["Mike Chen"]anahtarına ilk kez eriştiğinizde, o çalışan için otomatik olarak boş bir liste oluşturur. Böylece her çalışan sözlükte var mı diye kontrol etmenize gerek kalmaz.Bu gruplama yaklaşımı, özgün metindeki dağınık bilgilerden tam çalışan profilleri oluşturmanızı sağlar ve her veri parçasının tam kaynak konumunu korur.
İlişki görselleştirmeleri oluşturma
HTML görselleştirme, ilişki verileriyle çok daha değerli hale gelir; hem tekil varlıkları hem de bağlantılarını gösterir:
İlişki görselleştirmesi, farklı bilgi parçalarının nasıl bağlanarak tam çalışan kayıtlarını oluşturduğunu vurgular; böylece yapay zekanın özgün duyurudan ilgili detayları doğru biçimde tanımlayıp grupladığını kolayca doğrulayabilirsiniz.
LangExtract’i Farklı Model Sağlayıcılarıyla Kullanma
LangExtract, maliyet, hız ve doğruluk arasında farklı dengeler sunan birkaç yapay zeka sağlayıcısıyla çalışır. Google’ın Gemini modelleri, yerleşik şema desteğiyle kutudan çıktığı gibi çalışır ve çoğu çıkarım görevi için en kolay seçenektir. OpenAI’nin GPT modelleri sıklıkla daha yüksek doğruluk sağlar ancak ek yapılandırma gerektirir ve çıkarım başına daha pahalıdır.
Yerel işlem veya API maliyetlerinden kaçınmak istediğinizde, modelleri Ollama ile yerelde çalıştırabilirsiniz. Yerel modeller, daha basit çıkarım görevlerinde iyi çalışır ve verileriniz üzerinde tam kontrol sağlar; ancak genellikle daha yavaş çalışır ve bulut tabanlı seçeneklere göre daha az doğru olabilir.
Üretime Ölçekleme
Gerçek dünyadaki metinler, temiz örneklerimize hiç benzemez. Karman çorman biçimlendirmeli 50 sayfalık raporlar, yazım hatalarıyla dolu müşteri e-postaları ve tuhaf boşluklara sahip PDF’ler alırsınız. Bazı belgelerde farklı bölümlere yayılmış binlerce kelime olabilir ve önemli bilgiler herhangi bir yerde gizli olabilir.
LangExtract bu dağınık durumları üç ana araçla yönetir: aynı anda birden fazla belgeyi çalıştırma, çıkarımı birkaç kez deneme ve büyük belgeleri daha küçük parçalara ayırma. Belgeleri teker teker işlemek yerine birçoğunu birlikte ele alabilir, böylece her şey çok daha hızlı olur.
max_workersayarı, aynı anda kaç belgenin işleneceğini kontrol eder. Daha fazla işçi daha hızlı sonuç demektir; ancak daha fazla maliyet getirir ve API limitlerine takılabilirsiniz. 10–20 işçiyle başlayıp duruma göre ayarlayın.Birden fazla çıkarım geçişi, ilk seferde kaçabilecek bilgileri bulmaya yardımcı olur. LangExtract çıkarımı birkaç kez çalıştırır ve sonuçları birleştirir. Bu, daha fazla detayı yakalar ama daha uzun sürer ve daha pahalıya mal olur.
Belgeleri parçalara ayırmak, uzun metinlerde yardımcı olur.
max_char_bufferayarı, büyük belgeleri yapay zekaya daha uygun daha küçük parçalara böler. Küçük parçalar (1000–2000 karakter) daha fazla detayı yakalar; büyük parçalar (3000–5000 karakter) daha çok bağlamı korur ama bazı şeyleri kaçırabilir.Üretim ortamı sorunlarla baş etmek demektir. Belgelerde kodlama hataları olabilir, ağ bağlantıları kesilebilir ve API’ler ne kadar hızlı işlem yapabileceğinize sınır koyabilir. Çıkarım işlerinizi izleyin, başarısız belgeler için yeniden deneme mantığı ekleyin ve farklı yapay zeka sağlayıcılarında ne kadar harcadığınızı takip edin.
Farklı belge türleriyle çalışırken, her tür için farklı çıkarım kuralları oluşturun. Hukuki sözleşmelerin, müşteri e-postalarından farklı komutlara ihtiyacı vardır. Finansal raporların, sosyal medya gönderilerinden farklı parça boyutlarına ihtiyacı vardır. Tek bir sistemin her şeyi yönetmesini zorlamak yerine her belge türü için ayrı hatlar oluşturun.
LangExtract ve Diğer NLP Kütüphaneleri
LangExtract, geleneksel NLP kütüphanelerine kıyasla farklı bir yaklaşım benimser. Çoğu kütüphane önceden eğitilmiş modellere veya kural tabanlı sistemlere dayanırken LangExtract, bağlamı ve anlamı insanlar gibi kavrayabilen Büyük Dil Modellerini kullanır. LangExtract’i ne zaman diğer seçeneklere tercih edeceğinizi anlamak için onu üç popüler Python NLP kütüphanesiyle karşılaştıralım.
spaCy
spaCy hız ve üretime hazır NLP görevlerine (tokenizasyon, sözcük türü etiketleme, adlandırılmış varlık tanıma gibi) odaklanır. Kişiler, kurumlar ve konumlar gibi yaygın varlıkları tanıyan önceden eğitilmiş modellerle gelir; ancak alanınıza özgü varlıklar veya özel kategorilerde zorlanır. spaCy, büyük miktarda metni hızlıca işler; ancak özel bilgi çıkarmak için modelleri yeniden eğitmeniz veya karmaşık kurallar yazmanız gerekir.
LangExtract, basit örnekler ve komutlarla özel varlıkları tanımlamanıza olanak tanıyarak bu karmaşıklığı ortadan kaldırır ve spaCy’nin izlemediği tam kaynak konumlarını da sağlar.
NLTK (Natural Language Toolkit)
NLTK (Natural Language Toolkit) eğitim ve araştırma için tasarlanmıştır; çok çeşitli NLP algoritmaları ve veri kümeleri sunar. Metin işleme için yapı taşları sağlar ancak tam çözümler inşa etmek ciddi programlama bilgisi gerektirir. NLTK, NLP kavramlarını öğrenmek ve prototiplemek için uygundur; ancak üretime hazır çıkarım sistemleri kurmak, birden çok NLTK bileşenini birleştirmeyi ve hatırı sayılır miktarda kod yazmayı gerektirir.
LangExtract, kutudan çıkar çıkmaz eksiksiz bir çözüm sunar — algoritma kodlamak yerine örneklerle ne istediğinizi tanımlarsınız ve ek geliştirme yapmadan etkileşimli görselleştirmeler elde edersiniz.
Transformers (Hugging Face)
Transformers (Hugging Face) adlandırılmış varlık tanıma ve soru yanıtlama dahil olmak üzere çeşitli NLP görevleri için son teknoloji dönüştürücü modellere erişim sunar. Güçlü olmakla birlikte, alanlara özgü kullanım için modelleri ince ayar yapmak makine öğrenimi uzmanlığı gerektirir ve yerleşik kaynak izleme veya ilişki çıkarımı sağlamaz. Model dağıtımını yönetmeniz, farklı model formatlarıyla başa çıkmanız ve kendi görselleştirme araçlarınızı oluşturmanız gerekir.
LangExtract, farklı yapay zeka modelleriyle çalışmanın karmaşıklığını soyutlar, kaynak izlemeyi otomatik olarak yönetir ve karmaşık model mimarilerine gerek kalmadan basit öznitelik gruplamayla ilişki çıkarımı sunar.
Özellik
LangExtract
spaCy
NLTK
Transformers
Kurulum karmaşıklığı
Basit komutlar + örnekler
Model eğitimi/kurallar
Algoritma kodlama
Model ince ayarı
Özel varlıklar
Doğal dil tanımı
Yeniden eğitim gerekir
Manuel kural yazımı
Model ince ayarı
Kaynak izleme
Tam konumlarla otomatik
Yok
Manuel uygulama
Manuel uygulama
İlişki çıkarımı
Yerleşik gruplama
Karmaşık kural yazımı
Manuel kodlama
Özel model geliştirme
Bağlam anlama
LLM destekli
Desen tabanlı
Kural tabanlı
Modele bağlı
Görselleştirme
Etkileşimli HTML
Harici araç gerekir
Harici araç gerekir
Harici araç gerekir
Öğrenme eğrisi
Düşük (örnek tabanlı)
Orta (NLP bilgisi)
Yüksek (algoritmalar)
Yüksek (ML uzmanlığı)
En uygun kullanım
Alana özgü çıkarım
Genel NLP hatları
Araştırma/öğrenme
Özel yapay zeka uygulamaları
Sonuç
LangExtract, metin çıkarımını karmaşık kurallar yazmaktan, verileriniz hakkında yapay zekayla konuşmaya dönüştürür. Basit komutlar ve örneklerle özel varlık çıkarımını kurmayı, ilişki çıkarımıyla ilgili bilgileri gruplamayı ve her bir veri parçasının tam kaynağını gösteren etkileşimli görselleştirmeler oluşturmayı öğrendiniz. Kütüphane, paralel işleme ve belge parçalama gibi üretim zorluklarını da ele alır; bu da onu dağınık, tutarsız metinlere sahip gerçek dünya uygulamaları için pratik kılar.
İster müşteri destek biletlerini işleyin, ister hukuki belgeleri analiz edin, ister akademik makalelerden içgörü çıkarın; LangExtract, geleneksel NLP kütüphanelerine göre daha sezgisel bir yaklaşım sunar. Model eğitimi veya kural yazmaya zaman harcamak yerine, belirli kullanım senaryonuz için hangi bilginin önemli olduğunu tanımlamaya odaklanabilirsiniz. Kendi metin verilerinizde basit çıkarımlarla başlayın, ardından bu öğreticide ele alınan üretim tekniklerini kullanarak ölçekleyin.