기존에 내가 했던 전처리 코드는 다음과 같음. 이 코드로 전처리하고 Test까지 돌려봤는데 살짝 이슈 있다고 판단.

def normalize_answer(s):
    def remove_(text):
        ''' 불필요한 기호 제거 '''
        text = re.sub("'", " ", text)
        text = re.sub('"', " ", text)
        text = re.sub(r'\\n', ' ', text)
        text = re.sub(r'\\(사진\\)', ' ', text)
        text = re.sub(r'△', ' ', text)
        text = re.sub(r'▲', ' ', text)
        text = re.sub(r'◇', ' ', text)
        text = re.sub(r'■', ' ', text)
        text = re.sub(r'ㆍ', ' ', text)
        text = re.sub(r'↑', ' ', text)
        text = re.sub(r'·', ' ', text)
        text = re.sub("‘", " ", text)
        text = re.sub("’", " ", text)                
        return text

    def white_space_fix(text):
        '''연속된 공백일 경우 하나의 공백으로 대체'''
        return ' '.join(text.split())

    def remove_punc(text):
        '''구두점 제거'''
        exclude = set(string.punctuation) - {'%'}  # 퍼센트 기호를 제거한 구두점 집합
        return ''.join(ch for ch in text if ch not in exclude)

    def lower(text):
        '''소문자 전환'''
        return text.lower()

“.”, “,”은 지우면 안됨

대문자 소문자 구분 해야할지도? (불확실) 아직은 소문자가 맞는듯

“:” 지우면 안됨

jong’s preprocessing

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import json
import re
import string
from tqdm.auto import tqdm
from sklearn.model_selection import train_test_split
from transformers import BertTokenizer

def normalize_answer(s):
    def remove_(text):
        ''' 불필요한 기호 제거 '''
        text = re.sub(r'\\n', ' ', text)
        text = re.sub(r'\\(사진\\)', ' ', text)
        text = re.sub(r'△', ' ', text)
        text = re.sub(r'▲', ' ', text)
        text = re.sub(r'◇', ' ', text)
        text = re.sub(r'■', ' ', text)
        text = re.sub(r'ㆍ', ' ', text)
        text = re.sub(r'↑', ' ', text)
        text = re.sub(r'·', ' ', text)
        text = re.sub("'", " ", text)
        text = re.sub("'", " ", text)              
        return text

    def white_space_fix(text):
        '''연속된 공백일 경우 하나의 공백으로 대체'''
        return ' '.join(text.split())

    # 전처리 함수들을 차례로 적용
    return white_space_fix(remove_(s))

# CSV 파일 경로
csv_file = './dataset/train.csv'
data = pd.read_csv(csv_file)

json_data = []

# 데이터 전처리
for _, row in tqdm(data.iterrows(), total=data.shape[0]):
    idx_id = row['id']
    context = normalize_answer(row['context'])  # context 열에 전처리 함수 적용
    question = row['question']
    answer = row['answer']

    json_data.append({
        "id" : idx_id,
        "context": context,
        "question": question,
        "answer": answer
    })