Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] 위키피디아 문서 크롤링과 KoBEST 데이터셋을 활용한 데이터 증강 #70

Merged
merged 85 commits into from
Dec 4, 2024

Conversation

gsgh3016
Copy link
Contributor

@gsgh3016 gsgh3016 commented Dec 3, 2024

📝 Summary

데이터 증강 관련 실험 모듈화

✅ Checklist

  • 관련 이슈가 명시되어 있습니다.
  • 테스트가 완료되었습니다.
  • 문서 업데이트가 포함되었습니다.
  • 코드 리뷰를 위한 사전 검토를 완료했습니다.

📄 Description

파일 별로 설명하도록 하겠습니다.

1. langchain_manager.py

  • 프롬프트 템플릿 정보와 출력 형식을 받아 체인을 관리하는 객체입니다.
  • 각 모듈 별 체인을 용이하게 관리하기 위해 만들었습니다.
  • 출력 형식을 str, bool, json으로 고정하였습니다.

2. base_processor.py

  • 데이터 처리 모듈을 추상 클래스로 모듈화하였습니다.
  • 새로운 데이터 처리 모듈 추가 시 본 클래스를 상속받아 process 함수를 구현하시면 됩니다.

3. kobest_augment.py, question_choices_generation.txt, validation.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 모듈과 프롬프트입니다.
  • KoBEST 데이터셋의 'paragraph' 데이터를 기반으로 'question', 'choices', 'answer'를 생성합니다.
  • 이후 생성된 데이터의 자체 유효성 검사와 출제 오류를 감지하여 'is_valid'에 저장합니다.

image

4. kobest_augmentation.ipynb

  • KoBEST 데이터셋을 사용한 증강 모듈 예시 파일입니다.
  • kobest_augment.sample_data(10) 에서 숫자 10을 바꿔 랜덤으로 선택되는 데이터의 숫자를 조정할 수 있습니다.

image

5. reasoning.py, reasoning.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 문제와 정답이 주어지면, 풀이 과정을 추론하고 'reasoning' 칼럼을 생성하여 저장합니다.

image

6. classification.py, information_source_with_reasoning.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 문제와 정답, 'reasoning' 이 주어지면, 외부 지식이 필요한 문제인지 구분하여 이유와 함께 출력합니다.
  • 외부 지식이 필요한 문제인 경우 '외적 추론', 외부 지식이 필요 없는 경우 '내적 추론'으로 구분됩니다.
  • 분류 결과와 이유을 각각 'category', 'analysis' 칼럼으로 저장합니다.

image

7. keywords_extractor.py, wikipedia_search_keyword_with_reasoning.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 외부 지식이 필요한 '외적 추론' 문제에서 동작합니다.
  • 문제와 정답, 'reasoning'을 입력받아 문제 풀이에 필요한 키워드를 추출합니다.
  • 총 5개의 키워드를 추출하여 keyword_{i} 칼럼에 저장합니다.

image

8. text_crawler.py

  • wikipediaapi 모듈을 사용해 만든 위키피디아 문서 크롤링 클래스입니다.
  • KeywordExtractor로 추출한 5개 키워드에서 위키피디아 문서를 가져옵니다.
  • 문서 내용, 문서 존재 여부를 각각 keyword_{i}_page, keyword_{i}_exists으로 저장합니다.

image

9. summarizer.py, document_summarization.txt,

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 크롤링한 위키피디아 문서와 키워드 5개를 입력으로 받아 요약합니다.
  • 요약문은 'keyword_{i}_summary'에 저장됩니다.

image

10. paragraph_generator.py, generation_from_wiki.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 키워드 별 요약문 5개를 하나의 지문으로 취합합니다.
  • 취합한 지문은 'raw_paragraph'로 저장됩니다.

image

11. paragraph_trimmer.py, trimming_paragraph.txt

  • BaseProcessor를 상속받아 구현된 데이터 처리 클래스입니다.
  • 하나로 취합한 지문을 수능 비문학 국어 지문과 같은 문체로 다듬습니다.
  • 생성된 지문은 'paragraph'에 새로 저장됩니다. 기존 'paragraph' 데이터는 'question_plus'에 저장됩니다. 만약 'question_plus'가 존재하는 경우, 두 데이터를 합쳐서 저장합니다.

image

12. data_version_manager.py

  • 버전 관리의 자유도를 높였습니다. 기존에는 Major 버전만 지정할 수 있었던 기능을 Minor 버전도 지정 가능하도록 변경했습니다.
  • 코드 동작을 단순화했습니다. 유지 보수에 용이하도록 코드를 수정했습니다.
  • 더 이상 data_version.yaml에 의존하지 않기 때문에 data_version.yaml 파일을 삭제했습니다.

13. .gitignore

💡 Notice (Optional)

해당 모듈은 augments/train_augmentation.ipynb와 augments/kobest_augmentation.ipynb에 사용 예시가 있습니다.

🔗 Related Issue(s)

close #29 , #53 , #61

@gsgh3016 gsgh3016 self-assigned this Dec 3, 2024
@gsgh3016 gsgh3016 changed the title Feature/29 aug with wiki [Feat] 위키피디아 문서 크롤링과 KoBEST 데이터셋을 활용한 데이터 증강 Dec 3, 2024
@gsgh3016 gsgh3016 added Priority: Medium 적절한 시기에 처리해야 할 작업 Type: Experiment 실험 결과 및 아이디어 공유 Status: Completed 완료 labels Dec 3, 2024
- `utils` 모듈에 실험 결과 파일명 생성 함수 추가
- `prompts/templates` 디렉토리 내부에 `data_classification` 디렉토리 생성
- 프롬프트 `solving_strategies.txt` 파일 생성
- `eda/images` 디렉토리 생성
- `category_distribution.png` 파일 생성
- `problem_type_analysis.ipynb`에서 `problem_solving_type_analysis.ipynb`으로 파일 이름 변경
- `problem_solving_type_analysis.ipynb` 코드에 변경 및 추가된 모듈 적용
- `data/experiment`에서 `data/experiments`로 디렉토리 이름 변경
- `utils/util.py` 함수의 결과 파일명을 생성하는 함수를 컨벤션에 맞도록 수정
- 실험 결과 파일이 `data/` 디렉토리 바로 아래 저장되던 점 수정
역할 부여, Instruction prompting, 3-shots 프롬프트 적용
- 전체 데이터셋에 대해서 실험 1.0.1 적용
- 데이터 구조 변경
- 위키피디아 크롤러 추가
- 데이터 통합 모듈 추가
- 인덱스 중복 저장 오류 해결
- `text_crawler.py`를 상위 디렉토리로 이동
- `augments/modules/wikipedia/` 디렉토리 삭제
@gsgh3016 gsgh3016 force-pushed the feature/29-aug-with-wiki branch from 2f87c49 to e5a3f86 Compare December 4, 2024 06:59
@gsgh3016 gsgh3016 merged commit 8985f82 into main Dec 4, 2024
3 checks passed
@gsgh3016 gsgh3016 deleted the feature/29-aug-with-wiki branch December 4, 2024 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: Medium 적절한 시기에 처리해야 할 작업 Type: Experiment 실험 결과 및 아이디어 공유
Projects
None yet
2 participants