Pelajari cara menyiapkan dan menggunakan LangExtract untuk mengekstrak data terstruktur dan relasi dari teks tidak terstruktur, serta membandingkan pendekatannya dengan pustaka NLP tradisional.
Mengekstrak data terstruktur dari dokumen teks menimbulkan masalah besar bagi tim data. Regular expression rusak ketika format berubah, kode parsing kustom melewatkan konteks yang mudah ditangkap manusia, dan solusi-solusi ini butuh perbaikan terus-menerus seiring perubahan sumber data Anda.
LangExtract mengatasinya dengan menggunakan model AI yang dapat membaca teks seperti manusia dan melacak secara tepat dari mana informasi berasal. Anda menjelaskan data apa yang Anda inginkan dengan istilah sederhana disertai beberapa contoh, dan LangExtract melakukan pekerjaan berat untuk memahami dan mengekstrak informasi tersebut.
Dalam tutorial ini, saya akan menjelaskan langkah demi langkah cara menyiapkan LangExtract untuk pengenalan entitas bernama, mengekstrak relasi antar entitas, bekerja dengan berbagai penyedia model AI, dan membandingkan pendekatan LangExtract dengan pustaka NLP tradisional. Anda juga akan belajar cara mendefinisikan tugas ekstraksi, memberikan contoh pelatihan, dan memproses hasil terstruktur untuk alur kerja analisis Anda.
Apa Itu LangExtract?
LangExtract adalah pustaka Python yang mengubah teks berantakan menjadi data terorganisasi menggunakan model AI. Alat pemrosesan teks lama sering bingung oleh konteks — mereka mungkin melihat “Apple” dan menganggapnya buah padahal Anda sedang membaca tentang perusahaan teknologi, atau menemukan “$500” dan menyebutnya harga padahal sebenarnya ID karyawan. Pencocokan pola dasar bisa menemukan alamat email, tetapi tidak bisa menentukan apakah “[email protected]” adalah karyawan saat ini atau hanya seseorang yang disebutkan dalam email lama.
Untuk mengatasi masalah konteks dan akurasi ini, LangExtract memberi Anda:
Pelacakan sumber — Menunjukkan dengan tepat dari mana setiap potongan data berasal di teks asli
Banyak model AI — Bekerja denganOpenAI, Anthropic, Google, dan model lokal melaluiOllama
Chunking cerdas — Memecah dokumen besar menjadi bagian-bagian dan memproses beberapa bagian sekaligus
Percobaan berganda — Menjalankan tugas yang sama beberapa kali untuk menangkap informasi yang terlewat
Laporan visual — Membuat halaman HTML tempat Anda dapat mengeklik data untuk melihat asalnya
Alat-alat ini bekerja bersama untuk mengubah cara Anda mengekstrak informasi dari teks. Alih-alih menulis aturan kompleks yang mudah rusak, Anda memberi tahu AI apa yang Anda inginkan menggunakan contoh sederhana. AI membaca teks seperti manusia dan melacak asal setiap informasi. Ini memungkinkan Anda menarik informasi dan relasi yang kompleks yang sebelumnya memerlukan ratusan baris kode.
Kapan Sebaiknya Menggunakan LangExtract?
LangExtract paling efektif ketika Anda perlu mengekstrak informasi kustom yang tidak dapat ditangani dengan baik oleh alat NLP tradisional. Jika Anda bekerja dengan teks spesifik domain di mana pengenalan entitas bernama standar kurang memadai, LangExtract memungkinkan Anda mendefinisikan hal-hal yang penting bagi bisnis Anda tanpa menulis aturan kompleks atau melatih ulang model. Ini sangat berguna saat Anda perlu memahami konteks dan relasi antar bagian informasi, bukan sekadar menemukan entitas individual.
LangExtract adalah pilihan yang baik ketika Anda memiliki:
Entitas spesifik domain — Istilah industri, nama produk, atau kategori kustom yang tidak dikenali model pra-latih
Relasi kompleks — Informasi yang perlu dikelompokkan, misalnya menghubungkan orang dengan peran dan detail kontaknya
Ekstraksi bergantung konteks — Di mana teks yang sama bisa berarti berbeda tergantung informasi sekitarnya
Kebutuhan verifikasi sumber — Kebutuhan untuk melacak tepatnya asal setiap potongan data yang diekstrak
Jenis dokumen campuran — Format berbeda seperti email, PDF, dan laporan yang memerlukan pendekatan pemrosesan fleksibel
Keahlian ML terbatas — Tim yang menginginkan ekstraksi andal tanpa pengetahuan machine learning mendalam
Pertimbangkan alat lain jika Anda mengerjakan tugas NLP yang sudah mapan seperti pengenalan entitas bernama dasar untuk kategori umum, membutuhkan pemrosesan sangat cepat untuk pola sederhana, atau memiliki batasan ketat untuk tidak menggunakan panggilan API eksternal. Pustaka tradisional sepertispaCy unggul untuk tugas NLP standar dengan pemrosesan volume tinggi, sementara LangExtract menonjol saat Anda membutuhkan ekstraksi cerdas dan kustom dengan kompleksitas penyiapan minimal.
Penyiapan LangExtract
Sebelum mulai mengekstrak data, Anda perlu memasang LangExtract dan menyiapkan akses ke model AI. Pustaka ini mendukung beberapa metode instalasi dan bekerja dengan berbagai penyedia AI.
Instalasi
Pasang LangExtract menggunakan pip atau uv. Untuk integrasiOpenAI, gunakan paket extras:
# Using pip
pip install langextract[openai]# Using uv
uv add langextract[openai]Didukung oleh
Ekstra [openai] menyertakan klien Python OpenAI. Untuk penyedia lain, Anda dapat memasang paket dasar dan menambahkan pustaka spesifik penyedia sesuai kebutuhan.
Penyiapan kunci API
LangExtract bekerja dengan beberapa penyedia AI. Siapkan kunci API sebagai variabel lingkungan:
# 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"Didukung oleh
Anda hanya memerlukan kunci untuk penyedia yang akan Anda gunakan. Untuk model lokal melalui Ollama, tidak diperlukan kunci API — cukup pasang dan jalankan Ollama di mesin Anda.
Uji cepat
Verifikasi penyiapan Anda dengan uji sederhana:
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!")Didukung oleh
Melakukan Named Entity Recognition (NER) di LangExtract
Named Entity Recognition (NER) menemukan dan mengklasifikasikan potongan informasi spesifik dalam teks , misalnya menemukan semua nama perusahaan, orang, dan lokasi yang disebutkan dalam laporan bisnis.
Alat NER tradisional bekerja dengan kategori yang telah ditentukan seperti “PERSON” atau “ORGANIZATION,” tetapi sering melewatkan entitas yang bergantung konteks dan penting bagi bisnis Anda. LangExtract memungkinkan Anda mendefinisikan jenis entitas kustom dan mengajarkan AI mengenali pola yang spesifik untuk domain Anda.
Mari mengekstrak entitas dari email dukungan pelanggan. Alih-alih kategori generik, kita akan mengidentifikasi entitas khusus dukungan seperti jenis keluhan, nama produk, dan kerangka waktu penyelesaian yang membantu memprioritaskan tiket.
Mendefinisikan tugas ekstraksi
Langkah pertama adalah menjelaskan apa yang ingin Anda ekstrak menggunakan prompt yang jelas. Prompt ini bertindak seperti instruksi untuk analis manusia — semakin spesifik Anda, semakin baik hasil yang didapat:
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.
""")Didukung oleh
Fungsi textwrap.dedent() menghapus indentasi ekstra dari string multi-baris, sehingga prompt Anda lebih mudah dibaca dalam kode sambil tetap bersih saat dikirim ke AI. Tanpanya, AI akan melihat semua spasi ekstra dari indentasi kode Anda.
Prompt ini memberi tahu AI untuk mencari informasi khusus dukungan, menggunakan kutipan persis dari teks, dan menambahkan konteks melalui atribut. Kuncinya adalah bersikap spesifik tentang domain Anda (dukungan pelanggan) dan apa yang membuat informasi berguna (membantu memprioritaskan dan merutekan tiket).
Memberikan contoh ekstraksi
Contoh mengajarkan AI secara tepat apa yang Anda inginkan dan bagaimana memformat hasil. Setiap contoh menunjukkan kepada AI sepotong teks dan entitas persis yang ingin Anda ekstrak darinya:
# 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"})])]Didukung oleh
Setiap objek ExampleData berisi sampel teks dan daftar objek Extraction. Objek Extraction menentukan tiga hal:
extraction_class: Jenis entitas (seperti "product" atau "timeline")
extraction_text: Kata-kata persis dari teks asli
attributes: Konteks tambahan yang membantu memahami entitas dengan lebih baik
Atribut inilah yang membedakan LangExtract dari NER tradisional. Alih-alih hanya menemukan “laptop,” kita dapat menangkap bahwa ia memiliki masalah “screen flickering” dan menandainya sebagai urgensi tinggi.
Menjalankan ekstraksi
Sekarang Anda dapat menjalankan ekstraksi pada teks baru menggunakan prompt dan contoh Anda. LangExtract akan menerapkan apa yang dipelajari untuk menemukan entitas serupa:
# 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!")Didukung oleh
Keluaran:
INFO:absl:Finalizing annotation for document ID doc_435b1cd5.
INFO:absl:Document annotation completed.
✓ Extracted 4 entities (3 unique types)
• Time: 3.34s
• Speed: 123 chars/sec
• Chunks: 1
Extraction completed successfully!Didukung oleh
Fungsi lx.extract() mengambil teks Anda, menerapkan instruksi prompt, dan menggunakan contoh untuk memandu ekstraksi. Fungsi ini mengembalikan objek hasil yang berisi semua entitas yang ditemukan, beserta lokasi persisnya di teks asli.
Anda dapat bereksperimen dengan model berbeda dengan mengubah parameter model_id. Model seperti "claude-3-haiku" atau "gpt-4o" mungkin memberi hasil berbeda tergantung kompleksitas teks dan kebutuhan Anda.
Bekerja dengan Data Hasil Ekstraksi di LangExtract
Setelah ekstraksi selesai, LangExtract mengembalikan objek hasil yang berisi semua entitas yang ditemukan dengan lokasi dan atribut persisnya. Kekuatan sesungguhnya terletak pada cara Anda mengakses, menganalisis, dan membagikan data terstruktur ini.
Mengakses entitas yang diekstrak
Objek hasil menyimpan semua entitas yang ditemukan dalam properti extractions. Setiap ekstraksi berisi teks entitas, tipenya, lokasi dalam dokumen asli, dan atribut apa pun:
# 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("---")Didukung oleh
Keluaran:
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'}
---Didukung oleh
Setiap objek ekstraksi melacak asal informasi secara tepat menggunakan char_interval, yang menunjukkan posisi mulai dan akhir di teks asli. Pelacakan sumber ini memungkinkan Anda memverifikasi hasil dan memahami konteks.
Menganalisis pola entitas
Anda dapat mengelompokkan dan menghitung entitas untuk memahami pola dalam data Anda:
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")Didukung oleh
Keluaran:
Entity breakdown:
product: 1 entities (25.0%)
timeline: 1 entities (25.0%)
urgency_indicator: 2 entities (50.0%)
Found 2 high-priority indicatorsDidukung oleh
Analisis ini membantu Anda dengan cepat melihat pola seperti jenis produk mana yang menghasilkan tiket dukungan terbanyak atau berapa banyak permintaan mendesak yang Anda terima.
Menyimpan hasil ekstraksi
LangExtract menyimpan hasil dalam format JSONL (JSON Lines), di mana setiap baris berisi data ekstraksi satu dokumen. Format ini cocok untuk alat pemrosesan data dan memudahkan penggabungan hasil dari banyak ekstraksi:
# Save results to a JSONL file
lx.io.save_annotated_documents([result],
output_name="support_ticket_extractions.jsonl",
output_dir=".")Didukung oleh
JSONL menyimpan setiap dokumen pada baris terpisah sebagai objek JSON lengkap. Tidak seperti berkas JSON biasa yang berisi satu array besar, berkas JSONL dapat diproses baris demi baris, sehingga ideal untuk dataset besar. Anda dapat membuka berkas ini di editor teks apa pun atau memuatnya ke alat analisis data seperti pandas.
Membuat visualisasi HTML interaktif
Visualisasi HTML adalah fitur yang membuat LangExtract benar-benar menonjol. Ini membuat laporan interaktif yang menyoroti entitas yang diekstrak di teks asli dan memungkinkan Anda mengeklik hasilnya:
# 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'")Didukung oleh
Keluaran:
HTML visualization saved as 'support_analysis.html'Didukung oleh
Visualisasi HTML menampilkan teks asli Anda dengan sorotan berwarna untuk setiap jenis entitas. Anda dapat mengeklik teks yang disorot untuk melihat atribut yang diekstrak, menavigasi antar entitas menggunakan kontrol, dan memverifikasi bahwa AI telah mengidentifikasi informasi penting dengan benar. Ini memudahkan pemeriksaan cepat hasil dan membangun kepercayaan pada pipeline ekstraksi Anda.
Visualisasi ini mencakup legenda yang menampilkan setiap jenis entitas, kontrol navigasi untuk berpindah antar entitas, dan informasi atribut terperinci untuk setiap ekstraksi. Pendekatan interaktif ini membuat pemahaman dan validasi hasil jauh lebih mudah dibanding melihat data JSON mentah.
Ekstraksi Relasi di LangExtract
Entitas dukungan pelanggan yang kita ekstrak bekerja dengan baik secara individual, tetapi tidak memberi gambaran lengkap. Saat pelanggan menyebut “MacBook Pro saya tahun 2021 bermasalah pada baterai,” Anda perlu memahami bahwa produk, tahun model, dan masalahnya merupakan satu kesatuan kasus dukungan. Menemukan potongan ini secara terpisah tidak membantu — Anda memerlukan relasi di antara mereka.
NLP tradisional menangani ini dengan buruk karena memperlakukan setiap entitas sebagai informasi terisolasi. Anda bisa mengekstrak “MacBook Pro”, “2021”, dan “masalah baterai” sebagai entitas terpisah, tetapi kemudian Anda memerlukan aturan kompleks untuk mengetahui detail mana yang terkait dengan produk mana. Pendekatan ini cepat runtuh saat menangani banyak produk atau pelanggan dalam teks yang sama.
LangExtract mengatasinya dengan mengekstrak relasi saat langkah awal alih-alih mencoba menghubungkan entitas setelahnya. Anda dapat mengelompokkan informasi terkait menggunakan atribut bersama sambil tetap melacak dari mana setiap bagian berasal di teks asli. Mari kita coba mengekstrak informasi karyawan dari dokumen HR di mana kita perlu menghubungkan orang dengan peran, departemen, dan detail kontaknya.
Menyiapkan ekstraksi relasi
Untuk contoh ini, kita akan mengekstrak informasi karyawan dari pengumuman perusahaan di mana beberapa detail tentang setiap orang perlu dihubungkan:
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"})])]Didukung oleh
Atribut employee_group bertindak sebagai sistem penghubung—semua entitas dengan nilai employee_group yang sama milik orang yang sama. Ini memungkinkan Anda mengekstrak informasi kompleks dan multi-bagian sambil tetap melacak detail mana yang saling berkaitan.
Menjalankan ekstraksi relasi
Sekarang mari mengekstrak dari pengumuman perusahaan dengan beberapa karyawan:
# 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")Didukung oleh
Setelah ekstraksi, Anda dapat mengelompokkan entitas terkait untuk melihat informasi lengkap bagi setiap karyawan. Ini memerlukan sedikit kode Python untuk mengorganisasi kembali entitas tersebar menjadi grup logis:
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']}")Didukung oleh
Keluaran:
=== 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: phoneDidukung oleh
Berikut yang dilakukan kode ini langkah demi langkah:
defaultdict(list) membuat kamus yang setiap entri barunya otomatis berupa daftar kosong
extraction.attributes.get("employee_group") mengambil ID grup dari atribut setiap entitas secara aman, mengembalikan None jika tidak ada
employee_groups[group_id].append(extraction) menambahkan setiap entitas ke daftar untuk grupnya
Loop bertingkat kemudian mencetak informasi lengkap setiap grup, diorganisasikan per karyawan
defaultdict adalah koleksi Python yang secara otomatis membuat entri yang hilang. Saat Anda mengakses employee_groups["Mike Chen"] untuk pertama kali, ia otomatis membuat daftar kosong untuk karyawan tersebut. Ini menghemat Anda dari keharusan memeriksa apakah setiap karyawan sudah ada di kamus.
Pendekatan pengelompokan ini memungkinkan Anda membangun kembali profil karyawan lengkap dari informasi tersebar dalam teks asli, sambil mempertahankan lokasi sumber persis untuk setiap potongan data.
Membuat visualisasi relasi
Visualisasi HTML menjadi lebih berharga dengan data relasi, karena menampilkan entitas individual dan keterkaitannya:
# 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'")Didukung oleh
Visualisasi relasi menyoroti bagaimana berbagai potongan informasi terhubung membentuk catatan karyawan yang lengkap, memudahkan verifikasi bahwa AI telah mengidentifikasi dan mengelompokkan detail terkait dari pengumuman asli dengan benar.
Menggunakan LangExtract dengan Berbagai Penyedia Model
LangExtract bekerja dengan beberapa penyedia model AI, masing-masing menawarkan kompromi berbeda antara biaya, kecepatan, dan akurasi. Model Gemini dari Google bekerja langsung dengan dukungan skema bawaan, sehingga menjadi opsi termudah untuk sebagian besar tugas ekstraksi. GPT dari OpenAI sering memberikan akurasi lebih tinggi tetapi memerlukan konfigurasi tambahan dan biaya per ekstraksi yang lebih besar.
# 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)Didukung oleh
Untuk pemrosesan lokal atau ketika Anda ingin menghindari biaya API, Anda dapat menjalankan model secara lokal menggunakan Ollama. Model lokal bekerja baik untuk tugas ekstraksi yang lebih sederhana dan memberi Anda kendali penuh atas data, meski biasanya berjalan lebih lambat dan mungkin kurang akurat dibanding opsi berbasis cloud.
# 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)Didukung oleh
Skalasi ke Produksi
Teks dunia nyata tidak seperti contoh bersih kita. Anda menerima laporan 50 halaman dengan format berantakan, email pelanggan penuh typo, dan PDF dengan spasi aneh. Beberapa dokumen memiliki ribuan kata tersebar di berbagai bagian, dan informasi penting bisa tersembunyi di mana saja.
LangExtract menangani situasi berantakan ini dengan tiga alat utama: menjalankan banyak dokumen sekaligus, mencoba ekstraksi beberapa kali, dan memecah dokumen besar menjadi bagian lebih kecil. Alih-alih memproses satu dokumen per waktu, Anda dapat mengerjakan banyak dokumen bersama-sama, sehingga semuanya jauh lebih cepat.
# 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)Didukung oleh
Pengaturan max_workers mengontrol berapa banyak dokumen yang diproses secara bersamaan. Lebih banyak worker berarti hasil lebih cepat, tetapi juga lebih mahal dan bisa mengenai batas API. Mulailah dengan 10–20 worker dan evaluasi hasilnya.
Beberapa kali pass ekstraksi membantu menemukan informasi yang mungkin terlewat pada percobaan pertama. LangExtract menjalankan ekstraksi beberapa kali dan menggabungkan hasilnya. Ini menangkap lebih banyak detail tetapi memakan waktu lebih lama dan biaya lebih besar.
Memecah dokumen menjadi chunk membantu untuk teks panjang. Pengaturan max_char_buffer memotong dokumen besar menjadi bagian lebih kecil yang lebih cocok untuk model AI. Chunk kecil (1000–2000 karakter) menangkap lebih banyak detail, sementara chunk besar (3000–5000 karakter) mempertahankan lebih banyak konteks namun bisa melewatkan hal-hal tertentu.
# 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)Didukung oleh
Pekerjaan produksi berarti menghadapi masalah. Dokumen bisa memiliki kesalahan encoding, koneksi jaringan bisa gagal, dan API bisa membatasi kecepatan pemrosesan. Pantau pekerjaan ekstraksi Anda, tambahkan logika retry untuk dokumen gagal, dan lacak berapa banyak yang Anda belanjakan pada berbagai penyedia AI.
Saat bekerja dengan berbagai jenis dokumen, siapkan aturan ekstraksi berbeda untuk masing-masing. Kontrak hukum memerlukan prompt berbeda dengan email pelanggan. Laporan keuangan memerlukan ukuran chunk berbeda dengan posting media sosial. Bangun pipeline terpisah untuk setiap jenis dokumen alih-alih mencoba membuat satu sistem menangani semuanya.
LangExtract vs. Pustaka NLP Lain
LangExtract mengambil pendekatan berbeda dibanding pustaka NLP tradisional. Sementara kebanyakan pustaka bergantung pada model pra-latih atau sistem berbasis aturan, LangExtract menggunakan Large Language Models yang dapat memahami konteks dan makna seperti manusia. Mari bandingkan dengan tiga pustaka NLP Python populer untuk memahami kapan Anda memilih LangExtract dibanding opsi lain.
spaCy
spaCy berfokus pada kecepatan dan tugas NLP siap produksi seperti tokenisasi, part-of-speech tagging, dan pengenalan entitas bernama. spaCy hadir dengan model pra-latih yang mengenali entitas umum seperti orang, organisasi, dan lokasi, tetapi kesulitan dengan entitas spesifik domain atau kategori kustom. spaCy unggul dalam memproses teks dalam jumlah besar dengan cepat, namun Anda perlu melatih ulang model atau menulis aturan kompleks untuk mengekstrak informasi kustom.
LangExtract menghilangkan kompleksitas ini dengan memungkinkan Anda mendefinisikan entitas kustom melalui contoh dan prompt sederhana, sekaligus menyediakan lokasi sumber persis yang tidak dilacak oleh spaCy.
NLTK (Natural Language Toolkit)
NLTK (Natural Language Toolkit) dirancang untuk pendidikan dan riset, menawarkan beragam algoritma dan dataset NLP. Ia menyediakan blok bangunan untuk pemrosesan teks namun memerlukan pengetahuan pemrograman signifikan untuk membangun solusi lengkap. NLTK cocok untuk mempelajari konsep NLP dan membuat prototipe, tetapi membangun sistem ekstraksi siap produksi memerlukan penggabungan banyak komponen NLTK dan penulisan kode yang substansial.
LangExtract menyediakan solusi lengkap secara langsung — Anda mendefinisikan apa yang Anda inginkan melalui contoh alih-alih mengodekan algoritme, dan mendapatkan visualisasi interaktif tanpa pekerjaan pengembangan tambahan.
Transformers (Hugging Face)
Transformers (Hugging Face) menyediakan akses ke model transformer mutakhir untuk berbagai tugas NLP, termasuk pengenalan entitas bernama dan question answering. Meskipun kuat, ini memerlukan keahlian machine learning untuk fine-tuning model pada domain spesifik, serta tidak menyediakan pelacakan sumber atau ekstraksi relasi bawaan. Anda perlu menangani deployment model, mengelola format model berbeda, dan membangun alat visualisasi sendiri.
LangExtract mengabstraksi kompleksitas bekerja dengan berbagai model AI, menangani pelacakan sumber secara otomatis, dan menyediakan ekstraksi relasi melalui pengelompokan atribut sederhana alih-alih arsitektur model yang kompleks.
Fitur
LangExtract
spaCy
NLTK
Transformers
Kompleksitas penyiapan
Prompt + contoh sederhana
Pelatihan model/aturan
Pengodean algoritme
Fine-tuning model
Entitas kustom
Definisi bahasa alami
Perlu pelatihan ulang
Penulisan aturan manual
Fine-tuning model
Pelacakan sumber
Otomatis dengan posisi presisi
Tidak tersedia
Implementasi manual
Implementasi manual
Ekstraksi relasi
Pengelompokan bawaan
Penulisan aturan kompleks
Pengodean manual
Pengembangan model kustom
Pemahaman konteks
Didukung LLM
Berbasis pola
Berbasis aturan
Bergantung model
Visualisasi
HTML interaktif
Butuh alat eksternal
Butuh alat eksternal
Butuh alat eksternal
Kurva belajar
Rendah (berbasis contoh)
Sedang (pengetahuan NLP)
Tinggi (algoritme)
Tinggi (keahlian ML)
Terbaik untuk
Ekstraksi spesifik domain
Pipeline NLP umum
Riset/pembelajaran
Aplikasi AI kustom
Kesimpulan
LangExtract mengubah ekstraksi teks dari menulis aturan kompleks menjadi berdiskusi dengan AI tentang data Anda. Anda telah mempelajari cara menyiapkan ekstraksi entitas kustom menggunakan prompt dan contoh sederhana, mengelompokkan informasi terkait melalui ekstraksi relasi, dan membuat visualisasi interaktif yang menunjukkan tepatnya asal setiap potongan data. Pustaka ini menangani tantangan produksi seperti pemrosesan paralel dan chunking dokumen, sehingga praktis untuk aplikasi dunia nyata dengan teks yang berantakan dan tidak konsisten.
Apakah Anda memproses tiket dukungan pelanggan, menganalisis dokumen hukum, atau mengekstrak wawasan dari makalah riset, LangExtract memberikan pendekatan yang lebih intuitif dibanding pustaka NLP tradisional. Alih-alih menghabiskan waktu untuk melatih model atau menulis aturan, Anda dapat fokus mendefinisikan informasi apa yang penting bagi kasus penggunaan spesifik Anda. Mulailah dengan ekstraksi sederhana pada data teks Anda sendiri, lalu lakukan skala dengan teknik produksi yang dibahas dalam tutorial ini.
Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Tingkatkan kemampuan pemrograman Anda dengan Windsurf, IDE bertenaga AI yang membantu Anda membangun, mendebug, dan mengimplementasikan kode lebih cepat.
Mengekstrak data terstruktur dari dokumen teks menimbulkan masalah besar bagi tim data. Regular expression rusak ketika format berubah, kode parsing kustom melewatkan konteks yang mudah ditangkap manusia, dan solusi-solusi ini butuh perbaikan terus-menerus seiring perubahan sumber data Anda.
LangExtract mengatasinya dengan menggunakan model AI yang dapat membaca teks seperti manusia dan melacak secara tepat dari mana informasi berasal. Anda menjelaskan data apa yang Anda inginkan dengan istilah sederhana disertai beberapa contoh, dan LangExtract melakukan pekerjaan berat untuk memahami dan mengekstrak informasi tersebut.
Dalam tutorial ini, saya akan menjelaskan langkah demi langkah cara menyiapkan LangExtract untuk pengenalan entitas bernama, mengekstrak relasi antar entitas, bekerja dengan berbagai penyedia model AI, dan membandingkan pendekatan LangExtract dengan pustaka NLP tradisional. Anda juga akan belajar cara mendefinisikan tugas ekstraksi, memberikan contoh pelatihan, dan memproses hasil terstruktur untuk alur kerja analisis Anda.
Apa Itu LangExtract?
LangExtract adalah pustaka Python yang mengubah teks berantakan menjadi data terorganisasi menggunakan model AI. Alat pemrosesan teks lama sering bingung oleh konteks — mereka mungkin melihat “Apple” dan menganggapnya buah padahal Anda sedang membaca tentang perusahaan teknologi, atau menemukan “$500” dan menyebutnya harga padahal sebenarnya ID karyawan. Pencocokan pola dasar bisa menemukan alamat email, tetapi tidak bisa menentukan apakah “[email protected]” adalah karyawan saat ini atau hanya seseorang yang disebutkan dalam email lama.
Untuk mengatasi masalah konteks dan akurasi ini, LangExtract memberi Anda:
Sumber: GitHub
Alat-alat ini bekerja bersama untuk mengubah cara Anda mengekstrak informasi dari teks. Alih-alih menulis aturan kompleks yang mudah rusak, Anda memberi tahu AI apa yang Anda inginkan menggunakan contoh sederhana. AI membaca teks seperti manusia dan melacak asal setiap informasi. Ini memungkinkan Anda menarik informasi dan relasi yang kompleks yang sebelumnya memerlukan ratusan baris kode.
Kapan Sebaiknya Menggunakan LangExtract?
LangExtract paling efektif ketika Anda perlu mengekstrak informasi kustom yang tidak dapat ditangani dengan baik oleh alat NLP tradisional. Jika Anda bekerja dengan teks spesifik domain di mana pengenalan entitas bernama standar kurang memadai, LangExtract memungkinkan Anda mendefinisikan hal-hal yang penting bagi bisnis Anda tanpa menulis aturan kompleks atau melatih ulang model. Ini sangat berguna saat Anda perlu memahami konteks dan relasi antar bagian informasi, bukan sekadar menemukan entitas individual.
LangExtract adalah pilihan yang baik ketika Anda memiliki:
Pertimbangkan alat lain jika Anda mengerjakan tugas NLP yang sudah mapan seperti pengenalan entitas bernama dasar untuk kategori umum, membutuhkan pemrosesan sangat cepat untuk pola sederhana, atau memiliki batasan ketat untuk tidak menggunakan panggilan API eksternal. Pustaka tradisional seperti spaCy unggul untuk tugas NLP standar dengan pemrosesan volume tinggi, sementara LangExtract menonjol saat Anda membutuhkan ekstraksi cerdas dan kustom dengan kompleksitas penyiapan minimal.
Penyiapan LangExtract
Sebelum mulai mengekstrak data, Anda perlu memasang LangExtract dan menyiapkan akses ke model AI. Pustaka ini mendukung beberapa metode instalasi dan bekerja dengan berbagai penyedia AI.
Instalasi
Pasang LangExtract menggunakan pip atau uv. Untuk integrasi OpenAI, gunakan paket extras:
Ekstra
[openai]menyertakan klien Python OpenAI. Untuk penyedia lain, Anda dapat memasang paket dasar dan menambahkan pustaka spesifik penyedia sesuai kebutuhan.Penyiapan kunci API
LangExtract bekerja dengan beberapa penyedia AI. Siapkan kunci API sebagai variabel lingkungan:
Anda hanya memerlukan kunci untuk penyedia yang akan Anda gunakan. Untuk model lokal melalui Ollama, tidak diperlukan kunci API — cukup pasang dan jalankan Ollama di mesin Anda.
Uji cepat
Verifikasi penyiapan Anda dengan uji sederhana:
Melakukan Named Entity Recognition (NER) di LangExtract
Named Entity Recognition (NER) menemukan dan mengklasifikasikan potongan informasi spesifik dalam teks , misalnya menemukan semua nama perusahaan, orang, dan lokasi yang disebutkan dalam laporan bisnis.
Alat NER tradisional bekerja dengan kategori yang telah ditentukan seperti “PERSON” atau “ORGANIZATION,” tetapi sering melewatkan entitas yang bergantung konteks dan penting bagi bisnis Anda. LangExtract memungkinkan Anda mendefinisikan jenis entitas kustom dan mengajarkan AI mengenali pola yang spesifik untuk domain Anda.
Mari mengekstrak entitas dari email dukungan pelanggan. Alih-alih kategori generik, kita akan mengidentifikasi entitas khusus dukungan seperti jenis keluhan, nama produk, dan kerangka waktu penyelesaian yang membantu memprioritaskan tiket.
Mendefinisikan tugas ekstraksi
Langkah pertama adalah menjelaskan apa yang ingin Anda ekstrak menggunakan prompt yang jelas. Prompt ini bertindak seperti instruksi untuk analis manusia — semakin spesifik Anda, semakin baik hasil yang didapat:
Fungsi
textwrap.dedent()menghapus indentasi ekstra dari string multi-baris, sehingga prompt Anda lebih mudah dibaca dalam kode sambil tetap bersih saat dikirim ke AI. Tanpanya, AI akan melihat semua spasi ekstra dari indentasi kode Anda.Prompt ini memberi tahu AI untuk mencari informasi khusus dukungan, menggunakan kutipan persis dari teks, dan menambahkan konteks melalui atribut. Kuncinya adalah bersikap spesifik tentang domain Anda (dukungan pelanggan) dan apa yang membuat informasi berguna (membantu memprioritaskan dan merutekan tiket).
Memberikan contoh ekstraksi
Contoh mengajarkan AI secara tepat apa yang Anda inginkan dan bagaimana memformat hasil. Setiap contoh menunjukkan kepada AI sepotong teks dan entitas persis yang ingin Anda ekstrak darinya:
Setiap objek
ExampleDataberisi sampel teks dan daftar objekExtraction. ObjekExtractionmenentukan tiga hal:extraction_class: Jenis entitas (seperti "product" atau "timeline")extraction_text: Kata-kata persis dari teks asliattributes: Konteks tambahan yang membantu memahami entitas dengan lebih baikAtribut inilah yang membedakan LangExtract dari NER tradisional. Alih-alih hanya menemukan “laptop,” kita dapat menangkap bahwa ia memiliki masalah “screen flickering” dan menandainya sebagai urgensi tinggi.
Menjalankan ekstraksi
Sekarang Anda dapat menjalankan ekstraksi pada teks baru menggunakan prompt dan contoh Anda. LangExtract akan menerapkan apa yang dipelajari untuk menemukan entitas serupa:
Keluaran:
Fungsi
lx.extract()mengambil teks Anda, menerapkan instruksi prompt, dan menggunakan contoh untuk memandu ekstraksi. Fungsi ini mengembalikan objek hasil yang berisi semua entitas yang ditemukan, beserta lokasi persisnya di teks asli.Anda dapat bereksperimen dengan model berbeda dengan mengubah parameter
model_id. Model seperti"claude-3-haiku"atau"gpt-4o"mungkin memberi hasil berbeda tergantung kompleksitas teks dan kebutuhan Anda.Bekerja dengan Data Hasil Ekstraksi di LangExtract
Setelah ekstraksi selesai, LangExtract mengembalikan objek hasil yang berisi semua entitas yang ditemukan dengan lokasi dan atribut persisnya. Kekuatan sesungguhnya terletak pada cara Anda mengakses, menganalisis, dan membagikan data terstruktur ini.
Mengakses entitas yang diekstrak
Objek hasil menyimpan semua entitas yang ditemukan dalam properti
extractions. Setiap ekstraksi berisi teks entitas, tipenya, lokasi dalam dokumen asli, dan atribut apa pun:Keluaran:
Setiap objek ekstraksi melacak asal informasi secara tepat menggunakan
char_interval, yang menunjukkan posisi mulai dan akhir di teks asli. Pelacakan sumber ini memungkinkan Anda memverifikasi hasil dan memahami konteks.Menganalisis pola entitas
Anda dapat mengelompokkan dan menghitung entitas untuk memahami pola dalam data Anda:
Keluaran:
Analisis ini membantu Anda dengan cepat melihat pola seperti jenis produk mana yang menghasilkan tiket dukungan terbanyak atau berapa banyak permintaan mendesak yang Anda terima.
Menyimpan hasil ekstraksi
LangExtract menyimpan hasil dalam format JSONL (JSON Lines), di mana setiap baris berisi data ekstraksi satu dokumen. Format ini cocok untuk alat pemrosesan data dan memudahkan penggabungan hasil dari banyak ekstraksi:
JSONL menyimpan setiap dokumen pada baris terpisah sebagai objek JSON lengkap. Tidak seperti berkas JSON biasa yang berisi satu array besar, berkas JSONL dapat diproses baris demi baris, sehingga ideal untuk dataset besar. Anda dapat membuka berkas ini di editor teks apa pun atau memuatnya ke alat analisis data seperti pandas.
Membuat visualisasi HTML interaktif
Visualisasi HTML adalah fitur yang membuat LangExtract benar-benar menonjol. Ini membuat laporan interaktif yang menyoroti entitas yang diekstrak di teks asli dan memungkinkan Anda mengeklik hasilnya:
Keluaran:
Visualisasi HTML menampilkan teks asli Anda dengan sorotan berwarna untuk setiap jenis entitas. Anda dapat mengeklik teks yang disorot untuk melihat atribut yang diekstrak, menavigasi antar entitas menggunakan kontrol, dan memverifikasi bahwa AI telah mengidentifikasi informasi penting dengan benar. Ini memudahkan pemeriksaan cepat hasil dan membangun kepercayaan pada pipeline ekstraksi Anda.
Visualisasi ini mencakup legenda yang menampilkan setiap jenis entitas, kontrol navigasi untuk berpindah antar entitas, dan informasi atribut terperinci untuk setiap ekstraksi. Pendekatan interaktif ini membuat pemahaman dan validasi hasil jauh lebih mudah dibanding melihat data JSON mentah.
Ekstraksi Relasi di LangExtract
Entitas dukungan pelanggan yang kita ekstrak bekerja dengan baik secara individual, tetapi tidak memberi gambaran lengkap. Saat pelanggan menyebut “MacBook Pro saya tahun 2021 bermasalah pada baterai,” Anda perlu memahami bahwa produk, tahun model, dan masalahnya merupakan satu kesatuan kasus dukungan. Menemukan potongan ini secara terpisah tidak membantu — Anda memerlukan relasi di antara mereka.
NLP tradisional menangani ini dengan buruk karena memperlakukan setiap entitas sebagai informasi terisolasi. Anda bisa mengekstrak “MacBook Pro”, “2021”, dan “masalah baterai” sebagai entitas terpisah, tetapi kemudian Anda memerlukan aturan kompleks untuk mengetahui detail mana yang terkait dengan produk mana. Pendekatan ini cepat runtuh saat menangani banyak produk atau pelanggan dalam teks yang sama.
LangExtract mengatasinya dengan mengekstrak relasi saat langkah awal alih-alih mencoba menghubungkan entitas setelahnya. Anda dapat mengelompokkan informasi terkait menggunakan atribut bersama sambil tetap melacak dari mana setiap bagian berasal di teks asli. Mari kita coba mengekstrak informasi karyawan dari dokumen HR di mana kita perlu menghubungkan orang dengan peran, departemen, dan detail kontaknya.
Menyiapkan ekstraksi relasi
Untuk contoh ini, kita akan mengekstrak informasi karyawan dari pengumuman perusahaan di mana beberapa detail tentang setiap orang perlu dihubungkan:
Atribut
employee_groupbertindak sebagai sistem penghubung—semua entitas dengan nilaiemployee_groupyang sama milik orang yang sama. Ini memungkinkan Anda mengekstrak informasi kompleks dan multi-bagian sambil tetap melacak detail mana yang saling berkaitan.Menjalankan ekstraksi relasi
Sekarang mari mengekstrak dari pengumuman perusahaan dengan beberapa karyawan:
Keluaran:
Bekerja dengan grup relasi
Setelah ekstraksi, Anda dapat mengelompokkan entitas terkait untuk melihat informasi lengkap bagi setiap karyawan. Ini memerlukan sedikit kode Python untuk mengorganisasi kembali entitas tersebar menjadi grup logis:
Keluaran:
Berikut yang dilakukan kode ini langkah demi langkah:
defaultdict(list)membuat kamus yang setiap entri barunya otomatis berupa daftar kosongextraction.attributes.get("employee_group")mengambil ID grup dari atribut setiap entitas secara aman, mengembalikan None jika tidak adaemployee_groups[group_id].append(extraction)menambahkan setiap entitas ke daftar untuk grupnyadefaultdictadalah koleksi Python yang secara otomatis membuat entri yang hilang. Saat Anda mengaksesemployee_groups["Mike Chen"]untuk pertama kali, ia otomatis membuat daftar kosong untuk karyawan tersebut. Ini menghemat Anda dari keharusan memeriksa apakah setiap karyawan sudah ada di kamus.Pendekatan pengelompokan ini memungkinkan Anda membangun kembali profil karyawan lengkap dari informasi tersebar dalam teks asli, sambil mempertahankan lokasi sumber persis untuk setiap potongan data.
Membuat visualisasi relasi
Visualisasi HTML menjadi lebih berharga dengan data relasi, karena menampilkan entitas individual dan keterkaitannya:
Visualisasi relasi menyoroti bagaimana berbagai potongan informasi terhubung membentuk catatan karyawan yang lengkap, memudahkan verifikasi bahwa AI telah mengidentifikasi dan mengelompokkan detail terkait dari pengumuman asli dengan benar.
Menggunakan LangExtract dengan Berbagai Penyedia Model
LangExtract bekerja dengan beberapa penyedia model AI, masing-masing menawarkan kompromi berbeda antara biaya, kecepatan, dan akurasi. Model Gemini dari Google bekerja langsung dengan dukungan skema bawaan, sehingga menjadi opsi termudah untuk sebagian besar tugas ekstraksi. GPT dari OpenAI sering memberikan akurasi lebih tinggi tetapi memerlukan konfigurasi tambahan dan biaya per ekstraksi yang lebih besar.
Untuk pemrosesan lokal atau ketika Anda ingin menghindari biaya API, Anda dapat menjalankan model secara lokal menggunakan Ollama. Model lokal bekerja baik untuk tugas ekstraksi yang lebih sederhana dan memberi Anda kendali penuh atas data, meski biasanya berjalan lebih lambat dan mungkin kurang akurat dibanding opsi berbasis cloud.
Skalasi ke Produksi
Teks dunia nyata tidak seperti contoh bersih kita. Anda menerima laporan 50 halaman dengan format berantakan, email pelanggan penuh typo, dan PDF dengan spasi aneh. Beberapa dokumen memiliki ribuan kata tersebar di berbagai bagian, dan informasi penting bisa tersembunyi di mana saja.
LangExtract menangani situasi berantakan ini dengan tiga alat utama: menjalankan banyak dokumen sekaligus, mencoba ekstraksi beberapa kali, dan memecah dokumen besar menjadi bagian lebih kecil. Alih-alih memproses satu dokumen per waktu, Anda dapat mengerjakan banyak dokumen bersama-sama, sehingga semuanya jauh lebih cepat.
Pengaturan
max_workersmengontrol berapa banyak dokumen yang diproses secara bersamaan. Lebih banyak worker berarti hasil lebih cepat, tetapi juga lebih mahal dan bisa mengenai batas API. Mulailah dengan 10–20 worker dan evaluasi hasilnya.Beberapa kali pass ekstraksi membantu menemukan informasi yang mungkin terlewat pada percobaan pertama. LangExtract menjalankan ekstraksi beberapa kali dan menggabungkan hasilnya. Ini menangkap lebih banyak detail tetapi memakan waktu lebih lama dan biaya lebih besar.
Memecah dokumen menjadi chunk membantu untuk teks panjang. Pengaturan
max_char_buffermemotong dokumen besar menjadi bagian lebih kecil yang lebih cocok untuk model AI. Chunk kecil (1000–2000 karakter) menangkap lebih banyak detail, sementara chunk besar (3000–5000 karakter) mempertahankan lebih banyak konteks namun bisa melewatkan hal-hal tertentu.Pekerjaan produksi berarti menghadapi masalah. Dokumen bisa memiliki kesalahan encoding, koneksi jaringan bisa gagal, dan API bisa membatasi kecepatan pemrosesan. Pantau pekerjaan ekstraksi Anda, tambahkan logika retry untuk dokumen gagal, dan lacak berapa banyak yang Anda belanjakan pada berbagai penyedia AI.
Saat bekerja dengan berbagai jenis dokumen, siapkan aturan ekstraksi berbeda untuk masing-masing. Kontrak hukum memerlukan prompt berbeda dengan email pelanggan. Laporan keuangan memerlukan ukuran chunk berbeda dengan posting media sosial. Bangun pipeline terpisah untuk setiap jenis dokumen alih-alih mencoba membuat satu sistem menangani semuanya.
LangExtract vs. Pustaka NLP Lain
LangExtract mengambil pendekatan berbeda dibanding pustaka NLP tradisional. Sementara kebanyakan pustaka bergantung pada model pra-latih atau sistem berbasis aturan, LangExtract menggunakan Large Language Models yang dapat memahami konteks dan makna seperti manusia. Mari bandingkan dengan tiga pustaka NLP Python populer untuk memahami kapan Anda memilih LangExtract dibanding opsi lain.
spaCy
spaCy berfokus pada kecepatan dan tugas NLP siap produksi seperti tokenisasi, part-of-speech tagging, dan pengenalan entitas bernama. spaCy hadir dengan model pra-latih yang mengenali entitas umum seperti orang, organisasi, dan lokasi, tetapi kesulitan dengan entitas spesifik domain atau kategori kustom. spaCy unggul dalam memproses teks dalam jumlah besar dengan cepat, namun Anda perlu melatih ulang model atau menulis aturan kompleks untuk mengekstrak informasi kustom.
LangExtract menghilangkan kompleksitas ini dengan memungkinkan Anda mendefinisikan entitas kustom melalui contoh dan prompt sederhana, sekaligus menyediakan lokasi sumber persis yang tidak dilacak oleh spaCy.
NLTK (Natural Language Toolkit)
NLTK (Natural Language Toolkit) dirancang untuk pendidikan dan riset, menawarkan beragam algoritma dan dataset NLP. Ia menyediakan blok bangunan untuk pemrosesan teks namun memerlukan pengetahuan pemrograman signifikan untuk membangun solusi lengkap. NLTK cocok untuk mempelajari konsep NLP dan membuat prototipe, tetapi membangun sistem ekstraksi siap produksi memerlukan penggabungan banyak komponen NLTK dan penulisan kode yang substansial.
LangExtract menyediakan solusi lengkap secara langsung — Anda mendefinisikan apa yang Anda inginkan melalui contoh alih-alih mengodekan algoritme, dan mendapatkan visualisasi interaktif tanpa pekerjaan pengembangan tambahan.
Transformers (Hugging Face)
Transformers (Hugging Face) menyediakan akses ke model transformer mutakhir untuk berbagai tugas NLP, termasuk pengenalan entitas bernama dan question answering. Meskipun kuat, ini memerlukan keahlian machine learning untuk fine-tuning model pada domain spesifik, serta tidak menyediakan pelacakan sumber atau ekstraksi relasi bawaan. Anda perlu menangani deployment model, mengelola format model berbeda, dan membangun alat visualisasi sendiri.
LangExtract mengabstraksi kompleksitas bekerja dengan berbagai model AI, menangani pelacakan sumber secara otomatis, dan menyediakan ekstraksi relasi melalui pengelompokan atribut sederhana alih-alih arsitektur model yang kompleks.
Fitur
LangExtract
spaCy
NLTK
Transformers
Kompleksitas penyiapan
Prompt + contoh sederhana
Pelatihan model/aturan
Pengodean algoritme
Fine-tuning model
Entitas kustom
Definisi bahasa alami
Perlu pelatihan ulang
Penulisan aturan manual
Fine-tuning model
Pelacakan sumber
Otomatis dengan posisi presisi
Tidak tersedia
Implementasi manual
Implementasi manual
Ekstraksi relasi
Pengelompokan bawaan
Penulisan aturan kompleks
Pengodean manual
Pengembangan model kustom
Pemahaman konteks
Didukung LLM
Berbasis pola
Berbasis aturan
Bergantung model
Visualisasi
HTML interaktif
Butuh alat eksternal
Butuh alat eksternal
Butuh alat eksternal
Kurva belajar
Rendah (berbasis contoh)
Sedang (pengetahuan NLP)
Tinggi (algoritme)
Tinggi (keahlian ML)
Terbaik untuk
Ekstraksi spesifik domain
Pipeline NLP umum
Riset/pembelajaran
Aplikasi AI kustom
Kesimpulan
LangExtract mengubah ekstraksi teks dari menulis aturan kompleks menjadi berdiskusi dengan AI tentang data Anda. Anda telah mempelajari cara menyiapkan ekstraksi entitas kustom menggunakan prompt dan contoh sederhana, mengelompokkan informasi terkait melalui ekstraksi relasi, dan membuat visualisasi interaktif yang menunjukkan tepatnya asal setiap potongan data. Pustaka ini menangani tantangan produksi seperti pemrosesan paralel dan chunking dokumen, sehingga praktis untuk aplikasi dunia nyata dengan teks yang berantakan dan tidak konsisten.
Apakah Anda memproses tiket dukungan pelanggan, menganalisis dokumen hukum, atau mengekstrak wawasan dari makalah riset, LangExtract memberikan pendekatan yang lebih intuitif dibanding pustaka NLP tradisional. Alih-alih menghabiskan waktu untuk melatih model atau menulis aturan, Anda dapat fokus mendefinisikan informasi apa yang penting bagi kasus penggunaan spesifik Anda. Mulailah dengan ekstraksi sederhana pada data teks Anda sendiri, lalu lakukan skala dengan teknik produksi yang dibahas dalam tutorial ini.