코드 실행 조건은 다음과 같습니다.
python *.py 폴더명 으로 실행합니다.
예를들어 python 문장분리.py 소설
import os
import re
import argparse
def split_sentences(content):
sentences = re.split(r'(?<=[.?!])', content)
return sentences
def save_sentences(sentences, output_path):
with open(output_path, 'w', encoding='utf-8') as file:
for sentence in sentences:
file.write(sentence.strip() + '\n')
def process_files(folder_path):
for file_name in os.listdir(folder_path):
if file_name.endswith('.txt'):
file_path = os.path.join(folder_path, file_name)
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
except UnicodeDecodeError:
# UTF-8로 열 수 없는 경우 다른 인코딩으로 시도
encodings = ['utf-8', 'cp949'] # 여기에 사용 가능한 인코딩 추가
for encoding in encodings:
try:
with open(file_path, 'r', encoding=encoding) as file:
content = file.read()
break
except UnicodeDecodeError:
continue
else:
print("파일을 열 수 없습니다:", file_path)
continue
sentences = split_sentences(content)
output_path = os.path.join(
folder_path, file_name[:-4] + '_sentences.txt')
save_sentences(sentences, output_path)
if name == 'main':
parser = argparse.ArgumentParser()
parser.add_argument("folder_path", help="폴더 경로")
args = parser.parse_args()
process_files(args.folder_path)
문제를 설명하겠습니다.
이 코드는 소설 폴더의 모든 txt 파일을 불러와 문장을 분리하도록 요청한 코드입니다.
문장을 분리하는 이유는 언어모델에 적용하기 위해서입니다.
그런데 이 코드를 실행하면 다음과 같은 문제가 발생합니다.
소설 1개만 불러와 이름만 바꾼채 복사 붙여넣기를 합니다.
모든 txt 파일을 불러와야하지만 1개의 파일만 불러옵니다.
문장 분리는 되지 않는 거 같습니다.
그냥 이름만 a_sentences.txt 이지 내용은 a.txt와 같은 내용입니다.
b.txt의 내용은 어디에도 없습니다.
저는 코딩을 배운적은 있지만 겨우 c언어 30분을 배운 게 전부입니다.
그것도 int가 뭔지 어떻게해야 c언어를 시작하는지 뭐 그런것입니다.
지금은 하나도 생각이 안 나지만요.
이 코드를 제가 원하는대로 실행하도록 수정하려면 어떻게 해야합니까?
이 코드 자체도 몇번 수정한 거지만 수정이 전혀 안 된거나 마찬가지입니다.