728x90
[LLM] 도큐먼트 로더(Document Loader)
도큐먼트 로더 (Document Loader)
01. 논문(arxiv)
Arxiv는 200만 편의 학술 논문을 위한 오픈 액세스 아카이브다.
ArxivLoader를 사용해서 논문을 로드할 수 있다.
# 패키지 설치
pip install -qU arxiv
pip install -qU pymupdf
# 로더 import
from langchain_community.document_loaders import ArxivLoader
# ArxivLoader를 사용하여 arXiv에서 문서를 로드합
# query - 검색할 논문의 arXiv ID
# load_max_docs - 로드할 최대 문서 수를 지정합니다.
docs = ArxivLoader(query="1605.08386", load_max_docs=2).load()
len(docs)
02. 허깅페이스 데이터셋
Hugging Face Hub는 다양한 작업에 사용될 수 있는 100개 이상의 언어로 된 5,000개 이상의 데이터셋을 제공한다.
이러한 데이터셋은 번역, 자동 음성 인식, 이미지 분류와 같은 다양한 작업에 활용된다.
HuggingFaceDatasetLoader를 사용해서 데이터셋을 로드할 수 있다.
# 로더 import
from langchain_community.document_loaders import HuggingFaceDatasetLoader
dataset_name = "imdb" # 데이터셋 이름을 "imdb"로 설정
page_content_column = "text" # 페이지 내용이 포함된 열의 이름을 "text"로 설정
# HuggingFaceDatasetLoader를 사용하여 데이터셋을 로드
# 데이터셋 이름과 페이지 내용 열 이름을 전달
loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
data = loader.load()
03. 웹 크롤링
03-1. Async Chromium
Chromium은 브라우저 자동화를 제어하는 데 사용되는 라이브러리인 Playwright에서 지원하는 브라우저 중 하나다.
AsyncChromiumLoader를 사용하여 웹 페이지의 콘텐츠를 비동기적으로 로드한다.
# 패키지 설치
pip install -qU playwright beautifulsoup4
# 로더 import
from langchain_community.document_loaders import AsyncChromiumLoader
# 크롤링할 URL 목록을 설정
urls = ["https://news.naver.com"]
# AsyncChromiumLoader를 사용하여 URL에서 비동기적으로 문서를 로드
loader = AsyncChromiumLoader(urls)
# 로드된 문서를 가져옴
docs = loader.load()
# 0번 문서의 내용 중 중간의 500자를 출력
docs[0].page_content[6000:6500]
Html2TextTransformer 클래스를 사용하여 HTML 문서를 텍스트로 변환한다.
# 패키지 설치
pip install -qU html2text
from langchain_community.document_transformers import Html2TextTransformer
html2text = Html2TextTransformer() # HTML을 텍스트로 변환하는 객체를 생성
docs_transformed = html2text.transform_documents(
docs
) # HTML 문서를 텍스트로 변환
print(docs_transformed[0].page_content[2000:2500])
03-2. Beautiful Soup
HTML 및 XML 문서를 파싱하기 위한 Python 패키지다.
파싱된 페이지에 대한 파싱 트리를 생성하여 HTML에서 데이터를 추출하는 데 사용한다.
from langchain_community.document_loaders import AsyncChromiumLoader
urls = ["https://news.naver.com"] # 크롤링할 URL 목록을 설정
# AsyncChromiumLoader를 사용하여 URL에서 비동기적으로 문서를 로드
loader = AsyncChromiumLoader(urls)
docs = loader.load()
from langchain_community.document_transformers import BeautifulSoupTransformer
# 변환 작업
bs_transformer = BeautifulSoupTransformer()
# HTML 문서를 변환 및 p, li, div, a 태그의 내용을 추출
docs_transformed = bs_transformer.transform_documents(
docs,
# tags_to_extract=["p", "li", "div", "a"]
tags_to_extract=["a"],
)
print(docs_transformed[0].page_content[:1000])
03-3. WebBaseLoader
WebBaseLoader는 HTML 웹페이지의 모든 텍스트를 추출하여, 다양한 용도로 활용할 수 있는 문서 형태로 변환하는 기능을 가진 도구다.
이를 통해 사용자는 웹에서 정보를 효율적으로 수집하고, 다양한 분석이나 애플리케이션에 필요한 형식으로 쉽게 변환할 수 있다.
from langchain_community.document_loaders import WebBaseLoader
# 웹 페이지 "https://news.naver.com/"에서 데이터를 로드하는 WebBaseLoader 객체를 생성
loader = WebBaseLoader("https://news.naver.com/", encoding="utf-8")
# SSL 인증서 오류 우회
loader.requests_kwargs = {"verify": False}
# 로더를 사용하여 데이터를 불러옴
web_data = loader.load()
print(web_data[0].page_content[2000:2500].replace("\n", ""))
04. 판다스 데이터프레임
데이터프레임은 판다스의 핵심적인 데이터 구조다. 이를 통해 다양한 유형의 데이터를 효과적으로 저장, 조작, 그리고 분석할 수 있다.
# 패키지 설치
pip install -qU pandas
import pandas as pd
# csv 파일에서 데이터를 읽어와 객체 생성
df = pd.read_csv("data/titanic.csv")
# 로더 import
from langchain_community.document_loaders import DataFrameLoader
# DataFrame에서 데이터를 로드하고, 'Team' 열을 페이지 내용으로 사용
loader = DataFrameLoader(df, page_content_column="Name")
loader.load()
출처
반응형
'🤖 AI > LLM' 카테고리의 다른 글
[LLM] 텍스트 분할(TextSplit) (0) | 2024.07.17 |
---|---|
[LLM] RAG (Retrieval-Augmented Generation) (0) | 2024.07.03 |
[LLM] 올라마 모델에 랭체인 적용하기 (0) | 2024.06.27 |
[LLM] 랭체인(LangChain) (0) | 2024.06.24 |
[LLM] 올라마(Ollama) (0) | 2024.06.21 |