기존에 내가 했던 전처리 코드는 다음과 같음. 이 코드로 전처리하고 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
})