🤖 AI/LLM

[LLM] 도큐먼트 로더(Document Loader)

heywantodo 2024. 7. 15. 15:23
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()

 

출처

https://wikidocs.net/book/14314

728x90
반응형