Closed sangHa0411 closed 3 years ago
충돌이 일어나는 이유는 제가 기성님 merge된 코드를 pull 하지 않고 바로 올려서 그런 것 같습니다. 실험 결과 나오고 방향 정해지면 정확히 작성해서 pull request 다시 신청하도록 하겠습니다.
preprocessor.py 에서 오는 preprocess_sen 함수를 사용하지 않도록 수정했습니다.
전역 변수 설정을 아래와 같이 하였습니다.
TAG_DICT = {'PER' : '인물', 'ORG' : '기관', 'DAT' : '날짜', 'LOC' : '위치', 'NOH' : '수량' , 'POH' : '기타'} SUB_TOKEN1 = '▲' SUB_TOKEN2 = '▫' OBJ_TOKEN1 = '◈' OBJ_TOKEN2 = '☆'
preprocess_data 함수를 변형했습니다.
def preprocessing_dataset(dataset): """ 처음 불러온 csv 파일을 원하는 형태의 DataFrame으로 변경 시켜줍니다.""" subject_entity = [] object_entity = [] sen_data = [] for s, i, j in zip(dataset['sentence'], dataset['subject_entity'], dataset['object_entity']): sub_info=eval(i) # 정보를 다 가져왔습니다. obj_info=eval(j) subject_entity.append(sub_info['word']) # 단어 정보를 추가하였습니다. object_entity.append(obj_info['word']) # 인덱스 정보, 타입 정보를 가져왔습니다. sub_type = sub_info['type'] sub_start = sub_info['start_idx'] sub_end = sub_info['end_idx'] obj_type = obj_info['type'] obj_start = obj_info['start_idx'] obj_end = obj_info['end_idx'] sen = add_sep_tok(s, sub_start, sub_end, sub_type, obj_start, obj_end, obj_type) sen_data.append(sen) out_dataset = pd.DataFrame({'id':dataset['id'], 'sentence':sen_data, 'subject_entity':subject_entity, 'object_entity':object_entity, 'label':dataset['label'],} )
기성님이 아이디어 및 코드를 주셨는데 제가 연습해보고 싶어 직접 구현해봤습니다.
def add_sep_tok(sen, sub_start, sub_end, sub_type, obj_start, obj_end, obj_type) : # type을 위에 있는 Dictionary를 활용해 한국어 단어로 변경합니다. sub_tok = TAG_DICT[sub_type] obj_tok = TAG_DICT[obj_type] # 아래 코드가 너무 길어질 것 같아서 위에서 토큰을 만들었습니다. # 아래에 13으로 설정한 이유는 위의 sub_start_tok, sub_end_tok 를 먼저 추가하게 되면 문장의 길이가 13이 늘어나서 뒤에 있는 obj_start, 및 , obj_end 에다가 13을 각각 더해줘서 위치를 재조정하였습니다. sub_start_tok = ' ' + SUB_TOKEN1 + ' ' + SUB_TOKEN2 + ' ' + sub_tok + ' ' + SUB_TOKEN2 + ' ' sub_end_tok = ' ' + SUB_TOKEN1 + ' ' obj_start_tok = ' ' + OBJ_TOKEN1 + ' ' + OBJ_TOKEN2 + ' ' + obj_tok + ' ' + OBJ_TOKEN2 + ' ' obj_end_tok = ' ' + OBJ_TOKEN1 + ' ' if sub_start < obj_start : sen = sen[:sub_start] + sub_start_tok + sen[sub_start:sub_end+1] + sub_end_tok + sen[sub_end+1:] obj_start += 13 obj_end += 13 sen = sen[:obj_start] + obj_start_tok + sen[obj_start:obj_end+1] + obj_end_tok + sen[obj_end+1:] else : sen = sen[:obj_start] + obj_start_tok + sen[obj_start:obj_end+1] + obj_end_tok + sen[obj_end+1:] sub_start += 13 sub_end += 13 sen = sen[:sub_start] + sub_start_tok + sen[sub_start:sub_end+1] + sub_end_tok + sen[sub_end+1:] return sen
저도 한글로 해주면 더 좋을 것 같다고 생각했어요! 지금 dev branch 받으셔서 충돌만 해결해주시면 좋을 것 같습니다!
충돌이 일어나는 이유는 제가 기성님 merge된 코드를 pull 하지 않고 바로 올려서 그런 것 같습니다. 실험 결과 나오고 방향 정해지면 정확히 작성해서 pull request 다시 신청하도록 하겠습니다.
preprocessor.py 에서 오는 preprocess_sen 함수를 사용하지 않도록 수정했습니다.
전역 변수 설정을 아래와 같이 하였습니다.
preprocess_data 함수를 변형했습니다.
기성님이 아이디어 및 코드를 주셨는데 제가 연습해보고 싶어 직접 구현해봤습니다.