LangExtract 및 LLM을 사용한 데이터 추출 초보자 가이드


작성자별 이미지
# 소개
귀중한 정보의 상당 부분이 여전히 구조화되지 않은 텍스트에 존재한다는 사실을 알고 계셨습니까? 예를 들어 연구 논문, 임상 노트, 재무 보고서 등이 있습니다. 이러한 텍스트에서 신뢰할 수 있고 구조화된 정보를 추출하는 것은 항상 어려운 일이었습니다. 언어추출 LLM(대형 언어 모델)을 사용하여 이 문제를 해결하는 오픈 소스 Python 라이브러리(Google에서 출시)입니다. 간단한 프롬프트와 몇 가지 예를 통해 추출할 내용을 정의한 다음 LLM(예: Google의 Gemini, OpenAI 또는 로컬 모델)을 사용하여 모든 길이의 문서에서 해당 정보를 추출할 수 있습니다. 이를 유용하게 만드는 또 다른 점은 매우 긴 문서(청크 및 다중 패스 처리를 통해)와 결과의 대화형 시각화를 지원한다는 것입니다. 이 라이브러리를 더 자세히 살펴보겠습니다.
# 1. 설치 및 설정
LangExtract를 로컬로 설치하려면 먼저 Python 3.10 이상이 설치되어 있는지 확인하십시오. 도서관은 다음에서 이용 가능합니다. PyPI. 터미널이나 가상 환경에서 다음을 실행합니다.
격리된 환경의 경우 먼저 가상 환경을 생성하고 활성화할 수 있습니다.
python -m venv langextract_env
source langextract_env/bin/activate # On Windows: .\langextract_env\Scripts\activate
pip install langextract
소스에서 다른 옵션을 사용하여 도커 여기에서도 확인할 수 있습니다.
# 2. API 키 설정(클라우드 모델용)
LangExtract 자체는 무료이며 오픈 소스이지만 클라우드 호스팅 LLM(예: Google Gemini 또는 OpenAI GPT 모델)을 사용하는 경우 API 키를 제공해야 합니다. 당신은 설정할 수 있습니다 LANGEXTRACT_API_KEY 환경변수로 저장하거나 .env 작업 디렉토리에 파일을 넣으세요. 예를 들어:
export LANGEXTRACT_API_KEY="YOUR_API_KEY_HERE"
또는 .env 파일:
기기 내 LLM을 통해 장차 ~ 가 되는 또는 다른 로컬 백엔드에는 API 키가 필요하지 않습니다. 활성화하려면 오픈AI당신은 달릴 것입니다 pip install langextract[openai]당신의 설정 OPENAI_API_KEY그리고 OpenAI를 사용하세요 model_id. 을 위한 버텍스 AI (기업 사용자) 서비스 계정 인증이 지원됩니다.
# 3. 추출 작업 정의
LangExtract는 추출할 정보를 알려주는 방식으로 작동합니다. 명확한 프롬프트 설명을 작성하고 하나 이상의 항목을 제공하면 됩니다. ExampleData 샘플 텍스트에서 올바른 추출이 어떻게 보이는지 보여주는 주석입니다. 예를 들어, 문학 작품에서 인물, 감정, 관계를 추출하려면 다음과 같이 작성할 수 있습니다.
import langextract as lx
prompt = """
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."""
examples = [
lx.data.ExampleData(
text="ROMEO. But soft! What light through yonder window breaks? ...",
extractions=[
lx.data.Extraction(
extraction_class="character",
extraction_text="ROMEO",
attributes={"emotional_state": "wonder"}
),
lx.data.Extraction(
extraction_class="emotion",
extraction_text="But soft!",
attributes={"feeling": "gentle awe"}
)
]
)
]
이러한 예(LangExtract의 README에서 가져온)는 모델에 정확히 어떤 종류의 구조화된 출력이 예상되는지 알려줍니다. 귀하의 도메인에 대해 유사한 예를 만들 수 있습니다.
# 4. 추출 실행
프롬프트와 예제가 정의되면 간단히 lx.extract() 기능. 주요 주장은 다음과 같습니다.
text_or_documents: 입력 텍스트, 텍스트 목록 또는 URL 문자열(LangExtract는 구텐베르그 또는 기타 URL에서 텍스트를 가져와 처리할 수 있음)입니다.prompt_description: 추출 지침(문자열)입니다.examples: 목록ExampleData원하는 출력을 보여줍니다.model_id: 사용할 LLM의 식별자(예:"gemini-2.5-flash"Google Gemini Flash 또는 다음과 같은 Ollama 모델의 경우"gemma2:2b"또는 다음과 같은 OpenAI 모델"gpt-4o").- 기타 선택적 매개변수:
extraction_passes(긴 텍스트에 대해 더 높은 기억력을 얻기 위해 추출을 다시 실행하기 위해)max_workers(청크에 대한 병렬 처리를 수행하기 위해)fence_output,use_schema_constraints등.
예를 들어:
input_text=""'JULIET. O Romeo, Romeo! wherefore art thou Romeo?
Deny thy father and refuse thy name;
Or, if thou wilt not, be but sworn my love,
And I'll no longer be a Capulet.
ROMEO. Shall I hear more, or shall I speak at this?
JULIET. 'Tis but thy name that is my enemy;
Thou art thyself, though not a Montague.
What’s in a name? That which we call a rose
By any other name would smell as sweet.'''
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-flash"
)
그러면 프롬프트와 예제가 텍스트와 함께 선택한 LLM으로 전송되고 Result 물체. LangExtract는 긴 텍스트를 청크로 토큰화하고 호출을 병렬로 일괄 처리하며 출력을 병합하는 작업을 자동으로 처리합니다.
# 5. 출력 및 시각화 처리
의 출력 lx.extract() Python 객체입니다(종종 result)에는 추출된 엔터티와 속성이 포함되어 있습니다. 프로그래밍 방식으로 검사하거나 나중에 저장할 수 있습니다. LangExtract는 결과를 저장하는 도우미 기능도 제공합니다. 예를 들어 결과를 JSONL(JSON Lines) 파일(한 줄에 하나의 문서)에 기록하고 대화형 HTML 검토를 생성할 수 있습니다. 예를 들어:
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl", output_dir=".")
html = lx.visualize("extraction_results.jsonl")
with open("viz.html", "w") as f:
f.write(html if isinstance(html, str) else html.data)
이것은 extraction_results.jsonl 파일과 대화형 viz.html 파일. JSONL 형식은 대규모 데이터 세트 및 추가 처리에 편리하며 HTML 파일은 다음과 같이 사람이 쉽게 검사할 수 있도록 추출된 각 범위를 컨텍스트(클래스별로 색상으로 구분)에 강조 표시합니다.

# 6. 입력 형식 지원
LangExtract는 입력에 유연합니다. 다음을 제공할 수 있습니다.
- 일반 텍스트 문자열: Python에 로드하는 모든 텍스트(예: 파일 또는 데이터베이스에서)를 처리할 수 있습니다.
- URL: 위에 표시된 대로 URL(예: 프로젝트 구텐베르크 링크) 처럼
text_or_documents="https://www.gutenberg.org/files/1513/1513-0.txt". LangExtract는 해당 문서에서 다운로드하고 추출합니다. - 텍스트 목록: 한 번의 호출로 여러 문서를 처리하려면 Python 문자열 목록을 전달하세요.
- 서식 있는 텍스트 또는 마크다운: LangExtract는 텍스트 수준에서 작동하므로 피드를 제공할 수도 있습니다. 가격 인하 또는 원시 텍스트로 전처리하는 경우 HTML입니다. (LangExtract 자체는 PDF나 이미지를 구문 분석하지 않으므로 먼저 텍스트를 추출해야 합니다.)
# 7. 결론
LangExtract를 사용하면 구조화되지 않은 텍스트를 구조화된 데이터로 쉽게 변환할 수 있습니다. 높은 정확도, 명확한 소스 매핑 및 간단한 사용자 정의 기능을 통해 규칙 기반 방법이 부족한 경우에도 잘 작동합니다. 이는 복잡하거나 도메인별 추출에 특히 유용합니다. 개선의 여지가 있지만 LangExtract는 이미 2025년에 근거 정보를 추출하기 위한 강력한 도구입니다.
칸왈 메린 데이터 과학과 AI와 의학의 교차점에 대한 깊은 열정을 가진 기계 학습 엔지니어이자 기술 작가입니다. 그녀는 “ChatGPT를 통한 생산성 극대화”라는 전자책을 공동 집필했습니다. 2022년 APAC Google Generation Scholar로서 그녀는 다양성과 학문적 우수성을 옹호하고 있습니다. 그녀는 또한 Tech Scholar, Mitacs Globalink Research Scholar 및 Harvard WeCode Scholar에서 Teradata Diversity로 인정받았습니다. Kanwal은 STEM 분야에서 여성의 역량을 강화하기 위해 FEMCodes를 설립한 변화에 대한 열렬한 옹호자입니다.



Post Comment