def checking(self, dataset_name: str = 'both') -> None:
datasets = {
'origin': self.dataset_origin,
'prepro': self.dataset_prepro,
'both': [self.dataset_origin, self.dataset_prepro]
}
selected_datasets = datasets.get(dataset_name, datasets['both'])
for dataset in selected_datasets:
print(dataset)# 전체 dataset 출력
print(dataset['train'][0])# train 데이터셋의 첫 번째 샘플 출력
print(dataset['validation'][0])# validation 데이터셋의 첫 번째 샘플 출력
print(dataset['test'][0])# test 데이터셋의 첫 번째 샘플 출력
checking 메서드를 정의하여 데이터셋을 확인할 수 있습니다.dataset_name 매개변수를 통해 확인할 데이터셋을 선택할 수 있습니다.'origin': 원본 데이터셋'prepro': 전처리된 데이터셋'both': 두 데이터셋 모두선택된 데이터셋의 전체 데이터, 학습 데이터의 첫 번째 샘플, 검증 데이터의 첫 번째 샘플, 테스트 데이터의 첫 번째 샘플을 출력합니다.
get_summary 메서드를 정의하여 데이터셋의 요약 정보를 가져올 수 있습니다.dataset_name 매개변수를 통해 확인할 데이터셋을 선택할 수 있습니다.'origin': 원본 데이터셋'prepro': 전처리된 데이터셋'both': 두 데이터셋 모두선택된 데이터셋의 학습 데이터, 검증 데이터, 테스트 데이터의 크기를 요약 정보로 반환합니다.
5. 메인 실행 부분
if __name__ == "__main__":
checker = dataset_check()
checker.checking() # 모든 데이터셋 확인
summary = checker.get_summary() # 데이터셋 요약 정보 가져오기
print(summary)
if __name__ == "__main__": 블록에서 dataset_check 클래스의 인스턴스를 생성하고, checking 메서드와 get_summary 메서드를 호출합니다.checking 메서드를 통해 데이터셋을 확인하고, get_summary 메서드를 통해 데이터셋의 요약 정보를 출력합니다.
이 코드는 데이터셋을 불러오고 확인하는 기능을 제공합니다. 원본 데이터셋과 전처리된 데이터셋을 비교할 수 있으며, 데이터셋의 크기 정보를 확인할 수 있습니다. 이를 통해 데이터셋의 특성을 이해하고 모델 학습에 적합한 데이터셋을 선택할 수 있습니다.
Data_Processor/Preprocessing_data/Plt.py : load_from_disk 함수를 사용하여 'Data_Processor/filtered_daily_dialog’데이터셋을 로드합니다.
현재 파일의 디렉토리 경로를 가져와 그래프를 저장할 경로를 설정합니다.
2. 데이터셋 분석
2.1 토큰 길이 분석 함수
def get_token_lengths(dataset_split):
token_lengths = []
for item in dataset_split:
dialog = item['dialog']
max_lengths = [len(line.split()) for line in dialog]
token_lengths.append(max(max_lengths))
return token_lengths
목적: 각 데이터셋 split의 대화 문장 최대 토큰 길이 계산
입력: 데이터셋 split (train, validation, test)
출력: 각 대화의 최대 토큰 길이 리스트
2.2 대화 길이 분석 함수
def get_dialog_lengths(dataset_split):
dialog_lengths = []
for item in dataset_split:
dialog = item['dialog']
dialog_lengths.append(len(dialog))
return dialog_lengths
목적: 각 데이터셋 split의 대화 요소 수(문장 수) 계산
입력: 데이터셋 split (train, validation, test)
출력: 각 대화의 요소 수 리스트
2.3 빈도수 계산 함수
def calculate_frequency(data):
freq = {}
for value in data:
if value in freq:
freq[value] += 1
else:
freq[value] = 1
return freq
목적: 입력 데이터의 각 고유 값 빈도수 계산
입력: 데이터 리스트
출력: 각 고유 값의 빈도수를 담은 딕셔너리
2.4 데이터 분석 실행
# 토큰 길이 분석
train_token_lengths = get_token_lengths(dataset['train'])
validation_token_lengths = get_token_lengths(dataset['validation'])
test_token_lengths = get_token_lengths(dataset['test'])
# 대화 길이 분석
train_dialog_lengths = get_dialog_lengths(dataset['train'])
validation_dialog_lengths = get_dialog_lengths(dataset['validation'])
test_dialog_lengths = get_dialog_lengths(dataset['test'])
# 빈도수 계산
train_token_freq = calculate_frequency(train_token_lengths)
validation_token_freq = calculate_frequency(validation_token_lengths)
test_token_freq = calculate_frequency(test_token_lengths)
train_dialog_freq = calculate_frequency(train_dialog_lengths)
validation_dialog_freq = calculate_frequency(validation_dialog_lengths)
test_dialog_freq = calculate_frequency(test_dialog_lengths)
각 데이터셋 split(train, validation, test)에 대해 토큰 길이, 대화 길이 분석 및 빈도수 계산 수행
github 상태
.env
git 브랜치 상태 다이어그램
변경된 파일 구조
코드 상세 리뷰
Data_Processor/filtered_Dataset.py
1. 데이터셋 로드
load_dataset
함수를 사용하여 'li2017dailydialog/daily_dialog' 데이터셋을 로드합니다.이 데이터셋은 일상 대화 데이터로 구성되어 있습니다.
2. 길이 제한 설정
학습 데이터, 검증 데이터, 테스트 데이터에 대해 각각 최소 및 최대 문장 길이를 설정합니다.
3. 필터링 함수 정의
filter_dataset
함수를 정의하여 주어진 최소 및 최대 문장 길이 범위에 해당하는 데이터만 선별합니다.이 함수는 데이터셋의 각 대화 문장 길이가 지정된 범위 내에 있는지 확인합니다.
4. 데이터셋 필터링
학습 데이터, 검증 데이터, 테스트 데이터를 각각
filter_dataset
함수를 사용하여 필터링합니다.필터링된 데이터셋은
filtered_train
,filtered_validation
,filtered_test
에 저장됩니다.5. 필터링된 데이터셋 저장
DatasetDict
형태로 필터링된 데이터셋을 저장합니다.학습 데이터, 검증 데이터, 테스트 데이터가 각각
'train'
,'validation'
,'test'
키로 저장됩니다.6. 로컬에 저장
필터링된 데이터셋을
'./Data_Processor/filtered_daily_dialog'
경로에 저장합니다.Data_Processor/TEST_Dataset.py
1. 클래스 정의
dataset_check
클래스를 정의합니다.이 클래스는 데이터셋을 불러오고 확인하는 기능을 제공합니다.2. 데이터셋 불러오기
**생성자에서 두 가지 데이터셋을 불러옵니다.
dataset_origin
: 원본 'li2017dailydialog/daily_dialog' 데이터셋dataset_prepro
: 전처리된 데이터셋 ('Data_Processor/filtered_daily_dialog')**3. 데이터셋 확인 함수
checking
메서드를 정의하여 데이터셋을 확인할 수 있습니다.dataset_name
매개변수를 통해 확인할 데이터셋을 선택할 수 있습니다.'origin'
: 원본 데이터셋'prepro'
: 전처리된 데이터셋'both'
: 두 데이터셋 모두선택된 데이터셋의 전체 데이터, 학습 데이터의 첫 번째 샘플, 검증 데이터의 첫 번째 샘플, 테스트 데이터의 첫 번째 샘플을 출력합니다.4. 데이터셋 요약 정보 가져오기
get_summary
메서드를 정의하여 데이터셋의 요약 정보를 가져올 수 있습니다.dataset_name
매개변수를 통해 확인할 데이터셋을 선택할 수 있습니다.'origin'
: 원본 데이터셋'prepro'
: 전처리된 데이터셋'both'
: 두 데이터셋 모두선택된 데이터셋의 학습 데이터, 검증 데이터, 테스트 데이터의 크기를 요약 정보로 반환합니다.5. 메인 실행 부분
if __name__ == "__main__":
블록에서dataset_check
클래스의 인스턴스를 생성하고,checking
메서드와get_summary
메서드를 호출합니다.checking
메서드를 통해 데이터셋을 확인하고,get_summary
메서드를 통해 데이터셋의 요약 정보를 출력합니다.이 코드는 데이터셋을 불러오고 확인하는 기능을 제공합니다. 원본 데이터셋과 전처리된 데이터셋을 비교할 수 있으며, 데이터셋의 크기 정보를 확인할 수 있습니다. 이를 통해 데이터셋의 특성을 이해하고 모델 학습에 적합한 데이터셋을 선택할 수 있습니다.
Data_Processor/Origin_data/Plt.py & Data_Processor/Preprocessing_data/Plt.py
1. 데이터셋 로드
Data_Processor/Origin_data/Plt.py :
load_dataset
함수를 사용하여 'li2017dailydialog/daily_dialog' 데이터셋을 로드합니다.Data_Processor/Preprocessing_data/Plt.py :
load_from_disk
함수를 사용하여 'Data_Processor/filtered_daily_dialog’데이터셋을 로드합니다.현재 파일의 디렉토리 경로를 가져와 그래프를 저장할 경로를 설정합니다.
2. 데이터셋 분석
2.1 토큰 길이 분석 함수
2.2 대화 길이 분석 함수
2.3 빈도수 계산 함수
2.4 데이터 분석 실행
3. 데이터셋 시각화
막대 그래프 생성:
학습, 검증, 테스트 데이터셋의 최대 토큰 길이 분포를 보여줍니다.
학습, 검증, 테스트 데이터셋의 대화 요소 수 분포를 보여줍니다.
산점도 생성:
학습, 검증, 테스트 데이터셋의 최대 토큰 길이 분포를 보여줍니다.
학습, 검증, 테스트 데이터셋의 대화 요소 수 분포를 보여줍니다.
4.그래프 저장
생성된 그래프를 각각 'dialog_analysis.png'와 'dialog_analysis_distribution.png'라는 이름으로 저장합니다.