Project/한국어 대화 분류 및 요약
[Project] 한국어 대화 분류 및 요약 - 데이터 전처리 2
gangee
2024. 6. 9. 19:22
728x90
반응형
- 이전 전처리에서 추가 전처리 진행
AI Hub 데이터
- 너무 짧은 문장은 주제 파악 및 요약이 불가능하거나 의미가 없다고 판단하여 10글자 이하의 문장 삭제
- 박스플롯을 기준으로 Q1 이하, Q3 이상 문장 삭제
- 데이터 노이즈를 줄여 분석 및 모델링의 정확성을 높임
- 이상치를 제거하여 극단적인 값이 분석 결과에 미치는 영향을 최소화
# 1. 길이가 10인 텍스트 데이터 제거
filtered_texts = [text for text in texts if len(text) > 10]
lengths = [len(text) for text in filtered_texts]
# 2. Q1 이하 및 Q3 이상의 길이를 가진 문장 제거
Q1 = np.percentile(lengths, 25)
Q3 = np.percentile(lengths, 75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
print(f"Q1: {Q1}")
print(f"Q3: {Q3}")
print(f"IQR: {IQR}")
print(f"Lower Bound: {lower_bound}")
filtered_data = {key: value for key, value in data.items() if Q1 < len(value) < Q3}
지식인 데이터 전처리
- 수집된 데이터의 칼럼 구성 : ['카테고리', '키워드', '질문', '답변']
- 질문과 답변으로 파일을 나누어 각가 .pkl 파일로 저장
[기초문법] csv파일 pkl 파일로 저장하기
def split_and_save_csv(df, category, save_directory):
# 필요한 열이 존재하는지 확인
if all(column in df.columns for column in ['카테고리', '키워드', '질문', '답변']):
# 질문과 답변 분리
df_q = df[['카테고리', '키워드', '질문']]
df_r = df[['카테고리', '키워드', '답변']]
# 저장할 파일 경로 생성
q_file_path = os.path.join(save_directory, f"{category}_Q.csv")
r_file_path = os.path.join(save_directory, f"{category}_R.csv")
# 분리된 DataFrame 저장
df_q.to_csv(q_file_path, index=False, encoding='utf-8')
df_r.to_csv(r_file_path, index=False, encoding='utf-8')
print(f"Saved {q_file_path} and {r_file_path}")
else:
print(f"Skipping {category}: Required columns are not present")
def process_all_csv_files(directory):
data_frames = read_csv_files(directory)
for df, file in data_frames:
category = os.path.splitext(file)[0]
split_and_save_csv(df, category, directory)
directory = '카테고리별' # 카테고리별 파일들이 저장된 디렉토리
process_all_csv_files(directory)
- AI Hub 데이터와 동일한 방식으로 불필요한 문자 제거, 띄어쓰기 교정, 맞춤법 교정 진행
- 지식인 데이터의 경우 내용이 문어체로 작성되어 있어 별도로 변환 작업 진행
문어체 변환 작업
- Hugging face의 kobart-text-style-transfer 모델을 사용하여 변환
728x90
반응형