CharacterTextSplitter
- 텍스트를 separator단위로 자릅니다.
- 각 잘린 부분이 chunk_size를 넘지않으면 합쳐집니다.
- separator가 없다면, chunk_size를 초과해도 잘리지 않고 하나의 chunk로 생성됩니다.
hp_book = "123 234 567 8 9123456"
text_splitter = CharacterTextSplitter(
separator=" ", # 공백 기준으로 나누거나 적절히 설정
chunk_size=10,
chunk_overlap=0,
length_function=len_func
)
para_list2 = text_splitter.split_text(hp_book)
print(para_list2)
스텝1 separator 단위로 나눈다
para_list2 = [ “123”, “234”, “567”, “8”, “9123456”]
단, separator가 최소단위이므로, chunk_size를 초과해도 separator가 없다면, 하나의 청크로 만들어진다.
스텝2. 만약 앞청크와 합쳤을 때, size가 chunk_size를 넘지 않는다면, 합친다
주의 ) 분리 기준은 “분리자 직전”까지 이므로, 만약 1번 청크와 2번 청크를 합치는 경우에는 1번 청크뒤의 분리자도 길이에 포함시켜야 한다. → 123과 234를 합칠 때, 234는 분리자 직전에 짤려있으므로 길이가 3이지만, 123은 분리자와 함께 붙여야하므로 분리자 1개를 포함한 길이가 4이다.
para_list2 = [ “123 234”, “567 8”,”9123456” ]
—> 각 길이 : 7 5 7
- 만약 chunk_size를 6으로 주면?
- 마지막 9123456은 chunk_size를 초과하지만, separator가 없으므로 잘리지 않고, 초과된 크기로 하나의 청크가 된다.
['123', '234', '567 8', '9123456']
길이 :: 3 3 5 7
스텝3. chunk_overlap이 있을 경우, 스텝2의 결과물로 나온 list에 반영한다.
주의 ) 여기서도 청크로 합쳐지는 단위는 separator 이며, 합쳐진 후의 크기가 chunk_size를 넘지 않을때만 합쳐진다.
스텝3-1. overlap을 1로 주었을 경우
para_list2 = [ “123 234”, “567 8”,”9123456” ]
# "567 8"에 바로 앞 청크인 234를 붙이려고 시도.
# 합쳐져도 "234 567 8"로서 길이가 9이지만, overlap 크기인 1을 벗어난
# 3의 길이를 가진"234"를 붙이려고 시도했으므로 실패.
## "9123456"에 바로 앞 청크인 "8"을 붙이려고 시도.
## 합쳐져도 "8 9123456"으로 길이가 9이므로 통과, overlap도 길이가 1인 것을 만족
## "8 9123456"으로 overlap 된다.
결과 :: ['123 234', '567 8', '8 9123456']
길이 :: 7 5 9
스텝3-2. overlap을 3으로 주었을 경우
para_list2 = [ “123 234”, “567 8”,”9123456” ]
# "567 8"에 바로 앞 청크인 234를 붙이려고 시도.
# 합쳐져도 "234 567 8"로서 길이가 9이지만, overlap 크기인 3을 벗어난 만족
# "234 567 8"으로 overlap 된다
## "9123456"에 바로 앞 청크인 "8"을 붙이려고 시도.
## 합쳐져도 "8 9123456"으로 길이가 9이므로 통과, overlap도 길이가 1인 것을 만족
## "8 9123456"으로 overlap 된다.
결과 :: ['123 234', '234 567 8', '8 9123456']
길이 :: 7 9 9
참조
'Python' 카테고리의 다른 글
[ Python ] TextBlob을 이용한 영어 형태소 분석 해보기 (1) | 2025.02.09 |
---|---|
[ Python ] 일본어 형태소 분석기 MeCab을 설치해보자 (0) | 2025.02.09 |
[ Python ] py-hanspell 맞춤법 검사기 오류 ( result 오류, json.loads 에러 ) (2) | 2024.11.06 |
[ Python ] PyTorch Error : shm.dll not found (0) | 2024.05.20 |
Python에서 GPT API를 사용해보자 - 1 (0) | 2024.05.16 |