fin_simplifier / fin_simplifier_README.md
combe4259's picture
Upload fin_simplifier_README.md
e204a58 verified
|
Raw
History Blame
7 kB

Financial Text Simplifier (๊ธˆ์œต ํ…์ŠคํŠธ ๊ฐ„์†Œํ™” ๋ชจ๋ธ)

Model Description

Open In Colab

fin_simplifier๋Š” ๋ณต์žกํ•œ ๊ธˆ์œต ์šฉ์–ด์™€ ๋ฌธ์žฅ์„ ์ผ๋ฐ˜์ธ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํ•œ๊ตญ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Encoder-Decoder ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

Architecture

  • Encoder: KR-FinBert-SC (๊ธˆ์œต ๋„๋ฉ”์ธ ํŠนํ™” BERT)
  • Decoder: SKT KoGPT2-base-v2 (ํ•œ๊ตญ์–ด ์ƒ์„ฑ ๋ชจ๋ธ)
  • Model Type: Seq2Seq (Encoder-Decoder)
  • Parameters: 255M

Key Features

  • ๊ธˆ์œต ์ „๋ฌธ ์šฉ์–ด๋ฅผ ์‰ฌ์šด ์ผ์ƒ์–ด๋กœ ๋ณ€ํ™˜
  • ํ•œ๊ตญ์–ด ๊ธˆ์œต ๋ฌธ์„œ์— ์ตœ์ ํ™”
  • PER, ROE, ํŒŒ์ƒ์ƒํ’ˆ ๋“ฑ ๋ณต์žกํ•œ ๊ฐœ๋… ๊ฐ„์†Œํ™”
  • ์€ํ–‰ ์ƒ๋‹ด ๋ฐ ๊ธˆ์œต ๊ต์œก ํ™œ์šฉ ๊ฐ€๋Šฅ

Intended Use

Primary Use Cases

  1. ๊ธˆ์œต ์ƒ๋‹ด ์ง€์›: ์€ํ–‰ ์ƒ๋‹ด ์‹œ ๊ณ ๊ฐ ์ดํ•ด๋„ ํ–ฅ์ƒ
  2. ๊ธˆ์œต ๊ต์œก: ๋ณต์žกํ•œ ๊ธˆ์œต ๊ฐœ๋…์„ ์‰ฝ๊ฒŒ ์„ค๋ช…
  3. ๋ฌธ์„œ ๊ฐ„์†Œํ™”: ์•ฝ๊ด€, ์ƒํ’ˆ ์„ค๋ช…์„œ ๋“ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜
  4. ์ ‘๊ทผ์„ฑ ๊ฐœ์„ : ๊ธˆ์œต ์†Œ์™ธ๊ณ„์ธต์˜ ๊ธˆ์œต ์„œ๋น„์Šค ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ

Out-of-Scope Use

  • ๋ฒ•์  ๊ตฌ์†๋ ฅ์ด ์žˆ๋Š” ๋ฌธ์„œ ์ž‘์„ฑ
  • ํˆฌ์ž ์กฐ์–ธ ๋˜๋Š” ๊ธˆ์œต ์ƒ๋‹ด ๋Œ€์ฒด
  • ์ •ํ™•ํ•œ ์ˆ˜์น˜๋‚˜ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

How to Use

Installation

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

Inference Example

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}")
# Output: "๊ฐ„์†Œํ™”: PER์€ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ํšŒ์‚ฌ ์ด์ต ๋Œ€๋น„ ๋น„์‹ผ์ง€ ์‹ผ์ง€ ๋ณด๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค."

Training Details

Training Data

  • Size: ์•ฝ 100๊ฐœ์˜ ๊ธˆ์œต ์šฉ์–ด ์Œ (๋ณต์žกํ•œ ์„ค๋ช… โ†’ ์‰ฌ์šด ์„ค๋ช…)
  • Domain: ํ•œ๊ตญ ๊ธˆ์œต ์šฉ์–ด ๋ฐ ๊ฐœ๋…
  • Categories:
    • ๊ธฐ๋ณธ ๊ธˆ์œต ์ง€ํ‘œ (PER, ROE, ROA ๋“ฑ)
    • ํˆฌ์ž ์ƒํ’ˆ (ETF, ELS, ํŒŒ์ƒ์ƒํ’ˆ ๋“ฑ)
    • ๋Œ€์ถœ/์˜ˆ๊ธˆ ์šฉ์–ด
    • ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ ์šฉ์–ด
    • ์„ธ๊ธˆ ๊ด€๋ จ ์šฉ์–ด

Training Procedure

  • Epochs: 10
  • Batch Size: 4 (with gradient accumulation steps: 2)
  • Learning Rate: 3e-5
  • Optimizer: AdamW with warmup
  • Label Smoothing: 0.1
  • Dropout: 0.2 (encoder and decoder)

Hyperparameters for Generation

  • Beam Search: 6 beams
  • Repetition Penalty: 1.2
  • Length Penalty: 0.8
  • Temperature: 0.7
  • Top-k: 50
  • Top-p: 0.95

Evaluation

Example Outputs

์›๋ฌธ (Complex) ๋ณ€ํ™˜ ๊ฒฐ๊ณผ (Simplified)
์‹œ๊ฐ€์ด์•ก์€ ๋ฐœํ–‰์ฃผ์‹์ˆ˜์— ์ฃผ๊ฐ€๋ฅผ ๊ณฑํ•œ ๊ฐ’์œผ๋กœ ๊ธฐ์—…์˜ ์‹œ์žฅ๊ฐ€์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‹œ๊ฐ€์ด์•ก์€ ํšŒ์‚ฌ์˜ ๋ชจ๋“  ์ฃผ์‹์„ ํ•ฉ์นœ ๊ฐ€๊ฒฉ์ž…๋‹ˆ๋‹ค.
ํŒŒ์ƒ๊ฒฐํ•ฉ์ฆ๊ถŒ์€ ๊ธฐ์ดˆ์ž์‚ฐ์˜ ๊ฐ€๊ฒฉ๋ณ€๋™์— ์—ฐ๊ณ„ํ•˜์—ฌ ์ˆ˜์ต์ด ๊ฒฐ์ •๋˜๋Š” ์ฆ๊ถŒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ƒ๊ฒฐํ•ฉ์ฆ๊ถŒ์€ ๋‹ค๋ฅธ ์ƒํ’ˆ ๊ฐ€๊ฒฉ์— ๋”ฐ๋ผ ์ˆ˜์ต์ด ๋ฐ”๋€Œ๋Š” ํˆฌ์ž ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค.
ํ™˜๋งค์กฐ๊ฑด๋ถ€์ฑ„๊ถŒ(RP)์€ ์ผ์ •๊ธฐ๊ฐ„ ํ›„ ๋‹ค์‹œ ๋งค์ž…ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ๋งค๋„ํ•˜๋Š” ์ฑ„๊ถŒ์ž…๋‹ˆ๋‹ค. RP๋Š” ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ฌ๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜๊ณ  ์ผ๋‹จ ํŒŒ๋Š” ์ฑ„๊ถŒ์ž…๋‹ˆ๋‹ค.
์œ ๋™์„ฑ์œ„ํ—˜์€ ์ž์‚ฐ์„ ์ ์ •๊ฐ€๊ฒฉ์— ํ˜„๊ธˆํ™”ํ•˜์ง€ ๋ชปํ•  ์œ„ํ—˜์ž…๋‹ˆ๋‹ค. ์œ ๋™์„ฑ์œ„ํ—˜์€ ๊ธ‰ํ•˜๊ฒŒ ํŒ” ๋•Œ ์ œ๊ฐ’์„ ๋ชป ๋ฐ›์„ ์œ„ํ—˜์ž…๋‹ˆ๋‹ค.
์›๋ฆฌ๊ธˆ๊ท ๋“ฑ์ƒํ™˜์€ ๋งค์›” ๋™์ผํ•œ ๊ธˆ์•ก์œผ๋กœ ์›๊ธˆ๊ณผ ์ด์ž๋ฅผ ์ƒํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์›๋ฆฌ๊ธˆ๊ท ๋“ฑ์ƒํ™˜์€ ๋งค๋‹ฌ ๊ฐ™์€ ๊ธˆ์•ก์„ ๊ฐš๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Limitations and Biases

Limitations

  1. ํ•™์Šต ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ: ์•ฝ 100๊ฐœ์˜ ์˜ˆ์‹œ๋กœ ํ•™์Šต๋˜์–ด ์ผ๋ฐ˜ํ™” ๋Šฅ๋ ฅ์ด ์ œํ•œ์ 
  2. ๋„๋ฉ”์ธ ํŠนํ™”: ๊ธˆ์œต ๋ถ„์•ผ ์™ธ ๋‹ค๋ฅธ ์ „๋ฌธ ์šฉ์–ด์—๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  3. ๋ฌธ๋งฅ ์ดํ•ด: ๊ธด ๋ฌธ์žฅ์ด๋‚˜ ๋ณต์žกํ•œ ๋ฌธ๋งฅ์—์„œ๋Š” ์ •ํ™•๋„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ์Œ
  4. ์ˆ˜์น˜ ์ •๋ณด: ์ •ํ™•ํ•œ ์ˆ˜์น˜๋‚˜ ๊ณ„์‚ฐ์‹ ๋ณ€ํ™˜์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ

Potential Biases

  • ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ๊ตญ ๊ธˆ์œต ์‹œ์žฅ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ
  • ์ผ๋ฐ˜ ์†Œ๋น„์ž ๊ด€์ ์˜ ๊ฐ„์†Œํ™”๋กœ ์ „๋ฌธ๊ฐ€ ์ˆ˜์ค€์˜ ์ •ํ™•์„ฑ์€ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ

Ethical Considerations

Responsible Use

  • โœ… ๊ธˆ์œต ๊ต์œก ๋ฐ ์ดํ•ด๋„ ํ–ฅ์ƒ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
  • โœ… ๋ณด์กฐ ๋„๊ตฌ๋กœ์„œ ์ธ๊ฐ„ ์ „๋ฌธ๊ฐ€์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • โŒ ๋ฒ•์  ํšจ๋ ฅ์ด ์žˆ๋Š” ๋ฌธ์„œ ์ž‘์„ฑ์— ์‚ฌ์šฉ ๊ธˆ์ง€
  • โŒ ํˆฌ์ž ๊ฒฐ์ •์˜ ์œ ์ผํ•œ ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉ ๊ธˆ์ง€

Privacy

  • ๋ชจ๋ธ์€ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Œ
  • ์ž…๋ ฅ๋œ ํ…์ŠคํŠธ๋Š” ์ €์žฅ๋˜์ง€ ์•Š์Œ

Citation

@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}
}

Acknowledgments

  • KR-FinBert-SC: ๊ธˆ์œต ๋„๋ฉ”์ธ ํŠนํ™” ์ธ์ฝ”๋” ์ œ๊ณต
  • SKT KoGPT2: ํ•œ๊ตญ์–ด ์ƒ์„ฑ ๋ชจ๋ธ ์ œ๊ณต
  • NH Bank Text-Gaze-Tracker Project: ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€ ๋ฐ ํ”ผ๋“œ๋ฐฑ

Contact

  • HuggingFace: combe4259
  • Model Card: ๋ฌธ์˜์‚ฌํ•ญ์€ HuggingFace ํ† ๋ก  ํƒญ์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”

License

์ด ๋ชจ๋ธ์€ ์—ฐ๊ตฌ ๋ฐ ๊ต์œก ๋ชฉ์ ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ƒ์—…์  ์‚ฌ์šฉ ์‹œ ๋ณ„๋„ ๋ฌธ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Updates

  • 2024.01: ์ดˆ๊ธฐ ๋ฒ„์ „ ๋ฆด๋ฆฌ์ฆˆ (v1.0)
  • ๊ธˆ์œต ์šฉ์–ด 100๊ฐœ ํ•™์Šต
  • KR-FinBert + KoGPT2 ์•„ํ‚คํ…์ฒ˜

Note: ์ด ๋ชจ๋ธ์€ ๊ธˆ์œต ์ •๋ณด์˜ ์ ‘๊ทผ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธˆ์œต ์ƒ๋‹ด์ด๋‚˜ ํˆฌ์ž ๊ฒฐ์ •์—๋Š” ๋ฐ˜๋“œ์‹œ ์ „๋ฌธ๊ฐ€์˜ ์กฐ์–ธ์„ ๊ตฌํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.