이 방법은 가장 간단한 방식입니다.
기본적으로 "\n\n" 을 기준으로 문자 단위로 텍스트를 분할하고, 청크의 크기를 문자 수로 측정합니다.
- 텍스트 분할 방식: 단일 문자 기준
- 청크 크기 측정 방식: 문자 수 기준
./data/appendix-keywords.txt파일을 열어 내용을 읽어들입니다.- 읽어들인 내용을
file변수에 저장합니다.
# data/appendix-keywords.txt 파일을 열어서 f라는 파일 객체를 생성합니다.
with open("./data/appendix-keywords.txt") as f:
file = f.read() # 파일의 내용을 읽어서 file 변수에 저장합니다.파일로부터 읽은 파일의 일부 내용을 출력합니다.
1 CharacterTextSplitter를 사용하여 분할
CharacterTextSplitter를 사용하여 텍스트를 청크(chunk)로 분할하는 코드에 대해 설명합니다.
separator: 분할할 기준을 설정합니다. 기본값은"\n\n"입니다.chunk_size: 각 청크의 최대 크기를 설정합니다. 예: 250자chunk_overlap: 인접한 청크 간 중복을 허용합니다. 예: 50자length_function: 텍스트의 길이를 계산하는 함수를 지정합니다. 예:len
from langchain_text_splitters import CharacterTextSplitter
# CharacterTextSplitter를 사용하여 텍스트를 청크(chunk)로 분할하는 코드
text_splitter = CharacterTextSplitter(
# 텍스트를 분할할 때 사용할 구분자를 지정합니다. 기본값은 "\n\n"입니다.
separator="\n\n",
# 분할된 텍스트 청크의 최대 크기를 지정합니다 (문자 수).
chunk_size=210,
# 분할된 텍스트 청크 간의 중복되는 문자 수를 지정합니다.
chunk_overlap=0,
# 텍스트의 길이를 계산하는 함수를 지정합니다.
length_function=len,
)text_splitter를 사용하여file텍스트를 문서 단위로 분할합니다.- 분할된 문서 리스트 중 첫 번째 문서(
texts[0])를 출력합니다.
# 텍스트를 청크로 분할합니다.
texts = text_splitter.create_documents([file])
print(len(texts[0].page_content)) # 분할된 문서의 개수를 출력합니다.
print(texts[0]) # 분할된 문서 중 첫 번째 문서를 출력합니다.다음은 문서와 함께 메타데이터를 전달하는 예시입니다.
메타데이터가 문서와 함께 분할되는 점에 주목해 주세요.
create_documents메서드는 텍스트 데이터와 메타데이터 리스트를 인자로 받습니다.
metadatas = [
{"document": 1},
{"document": 2},
] # 문서에 대한 메타데이터 리스트를 정의합니다.
documents = text_splitter.create_documents(
[
file,
file,
], # 분할할 텍스트 데이터를 리스트로 전달합니다.
metadatas=metadatas, # 각 문서에 해당하는 메타데이터를 전달합니다.
)
print(documents[0]) # 분할된 문서 중 첫 번째 문서를 출력합니다.split_text() 메서드를 사용하여 텍스트를 분할합니다.
text_splitter.split_text(file)[0]은file텍스트를text_splitter를 사용하여 분할한 후, 분할된 텍스트 조각 중 첫 번째 요소를 반환합니다.