LangChain 기반 문단 분리기
실행 준비
!pip install openai
!pip install gradio
!pip install faiss-cpu sentence-transformers
!pip install pdfplumber
!pip install tiktoken
문장 분리 방법
- 청크당 300토큰 기준
- 50토큰 겹침(sliding window)
LangChain 기반 분리기 (RecursiveCharacterTextSplitter 사용)
from langchain.text_splitter import RecursiveCharacterTextSplitter
import pdfplumber
# ✅ PDF에서 텍스트 추출
def extract_text_from_pdf(file_path: str) -> str:
full_text = ""
with pdfplumber.open(file_path) as pdf:
for page in pdf.pages:
text = page.extract_text()
if text:
full_text += text + "\n"
return full_text
# ✅ LangChain 분리기 설정
def split_text_with_langchain(text: str, chunk_size: int = 300, chunk_overlap: int = 50) -> List[str]:
splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
model_name="gpt-3.5-turbo",
chunk_size=chunk_size,
chunk_overlap=chunk_overlap
)
return splitter.split_text(text)
# ✅ 실행
pdf_path = "/content/sample.pdf"
text = extract_text_from_pdf(pdf_path)
chunks = split_text_with_langchain(text)
# ✅ 출력 확인
print(f"LangChain 방식: 총 {len(chunks)}개의 청크 생성됨")
print("\n🔹 첫 번째 청크 예시:\n", chunks[0])