--- language: ko license: other base_models: - snunlp/KR-FinBert-SC - skt/kogpt2-base-v2 tags: - encoder-decoder - seq2seq - text-simplification - financial-domain - ko - pytorch datasets: - combe4259/fin_simplifier_dataset --- # 금융 텍스트 간소화 모델 (Financial Text Simplifier) ## 모델 설명 [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/19Q7kUWtHX2shLx6iGGoT66wEidOrvLCf?usp=sharing) **fin_simplifier**는 복잡한 금융 용어와 문장을 일반인이 이해하기 쉬운 한국어로 변환하는 인코더-디코더 모델입니다. ### 모델 구조 (config.json 기반) - **모델 타입**: EncoderDecoderModel - **인코더**: snunlp/KR-FinBert-SC (은닉 차원: 768) - **디코더**: skt/kogpt2-base-v2 (어휘 크기: 51,201) - **파라미터 수**: 약 255M - **파일 크기**: 1.02GB (safetensors 형식) ### 주요 특징 - 금융 전문 용어를 쉬운 일상어로 변환 - 한국어 금융 문서에 최적화 - 복잡한 금융 개념 간소화 (PER, ROE, 파생상품 등) - 은행 상담 및 금융 교육 활용 가능 ## 사용 목적 ### 주요 활용 사례 1. **금융 상담 지원**: 은행 상담 시 고객 이해도 향상 2. **금융 교육**: 복잡한 금융 개념을 쉽게 설명 3. **문서 간소화**: 약관, 상품 설명서 등을 이해하기 쉽게 변환 4. **접근성 개선**: 금융 소외계층의 금융 서비스 접근성 향상 ### 사용 제한 사항 - 법적 구속력이 있는 문서 작성 - 투자 조언 또는 금융 상담 대체 - 정확한 수치나 계산이 필요한 경우 ## 사용 방법 ### 설치 ```python from transformers import EncoderDecoderModel, AutoTokenizer import torch # Model loading model = EncoderDecoderModel.from_pretrained("combe4259/fin_simplifier") encoder_tokenizer = AutoTokenizer.from_pretrained("snunlp/KR-FinBert-SC") decoder_tokenizer = AutoTokenizer.from_pretrained("skt/kogpt2-base-v2") # Set special tokens if decoder_tokenizer.pad_token is None: decoder_tokenizer.pad_token = decoder_tokenizer.eos_token ``` ### 추론 예시 ```python def simplify_text(text, model, encoder_tokenizer, decoder_tokenizer): # Tokenize input inputs = encoder_tokenizer( text, return_tensors="pt", max_length=128, padding="max_length", truncation=True ) # Generate simplified text with torch.no_grad(): generated = model.generate( input_ids=inputs["input_ids"], attention_mask=inputs["attention_mask"], max_length=128, num_beams=6, repetition_penalty=1.2, length_penalty=0.8, early_stopping=True, do_sample=True, top_k=50, top_p=0.95, temperature=0.7 ) # Decode output simplified = decoder_tokenizer.decode(generated[0], skip_special_tokens=True) return simplified # Example usage complex_text = "주가수익비율(PER)은 주가를 주당순이익으로 나눈 지표입니다." simple_text = simplify_text(complex_text, model, encoder_tokenizer, decoder_tokenizer) print(f"원문: {complex_text}") print(f"간소화: {simple_text}") # 출력 예시: 모델이 생성하는 간소화된 텍스트 ``` ## 학습 상세 정보 ### 학습 데이터셋 [데이터셋](https://huggingface.co/datasets/combe4259/fin_simplifier_dataset/tree/main) 자체 제작 데이터셋 -출처: NH농협은행 -NH농협은행 상품설명서를 gemma 모델에 투입하여 변환하여 생성 ### 학습 설정 (trainer_state.json 기반) - **에포크**: 10 - **배치 크기**: 4 (gradient accumulation steps: 2) - **최대 학습률**: 2.99e-05 - **최종 학습률**: 8.82e-09 - **옵티마이저**: AdamW (warmup steps: 200) - **레이블 스무딩**: 0.1 - **드롭아웃**: 0.2 (인코더 및 디코더) ### 생성 하이퍼파라미터 - **Beam Search**: 6 beams - **Repetition Penalty**: 1.2 - **Length Penalty**: 0.8 - **Temperature**: 0.7 - **Top-k**: 50 - **Top-p**: 0.95 ## 평가 결과 ### 학습 성과 (trainer_state.json 기준) - **초기 손실**: 13.53 - **최종 손실**: 3.76 - **손실 감소율**: 72.2% - **총 학습 스텝**: 3,600 - **수렴 패턴**: 에포크 8부터 안정적 수렴 ### 에포크별 평균 손실 | 에포크 | 평균 손실 | |--------|-----------| | 1 | 8.98 | | 2 | 6.93 | | 3 | 5.95 | | 4 | 5.28 | | 5 | 4.81 | | 6 | 4.44 | | 7 | 4.17 | | 8 | 3.97 | | 9 | 3.82 | | 10 | 3.73 | ### 예시 출력 | 원문 (Complex) | 변환 결과 (Simplified) | |---------------|---------------------| | 시가총액은 발행주식수에 주가를 곱한 값으로 기업의 시장가치를 나타냅니다. | 시가총액은 회사의 모든 주식을 합친 가격입니다. | | 파생결합증권은 기초자산의 가격변동에 연계하여 수익이 결정되는 증권입니다. | 파생결합증권은 다른 상품 가격에 따라 수익이 바뀌는 투자 상품입니다. | | 환매조건부채권(RP)은 일정기간 후 다시 매입하는 조건으로 매도하는 채권입니다. | RP는 나중에 다시 사겠다고 약속하고 일단 파는 채권입니다. | | 유동성위험은 자산을 적정가격에 현금화하지 못할 위험입니다. | 유동성위험은 급하게 팔 때 제값을 못 받을 위험입니다. | | 원리금균등상환은 매월 동일한 금액으로 원금과 이자를 상환하는 방식입니다. | 원리금균등상환은 매달 같은 금액을 갚는 방식입니다. | ## 인용 ```bibtex @misc{fin_simplifier2024, title={Financial Text Simplifier: Korean Financial Terms Simplification Model}, author={combe4259}, year={2024}, publisher={HuggingFace}, url={https://huggingface.co/combe4259/fin_simplifier} } ``` ## 감사의 말 - **KR-FinBert-SC**: 금융 도메인 특화 인코더 제공 - **SKT KoGPT2**: 한국어 생성 모델 제공 ## 연락처 - **HuggingFace**: [combe4259](https://huggingface.co/combe4259) - **Model Card**: 문의사항은 HuggingFace 토론 탭을 이용해주세요 ---