λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
ꡐ윑/슀파λ₯΄νƒ€

[TIL] 내일배움캠프 AI 9κΈ° - 21회

by gomdeng 2025. 2. 4.

🐢 ν•™μŠ΅ λ²”μœ„

  • μŠ€νƒ λ‹€λ“œλ°˜ 
  • 개인 곡뢀

 

🐢 ν•™μŠ΅ λ‚΄μš©

✨ 개인 곡뢀

βœ”οΈ ν† ν°ν™” 
  1. 토큰 (token)
   1) κ°œλ…: μ£Όμ–΄μ§„ ν…μŠ€νŠΈλ₯Ό 뢄석 및 처리 κ°€λŠ₯ν•œ μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆˆ 것

  2. 토큰화
   1) κ°œλ…: ν…μŠ€νŠΈλ₯Ό μ μ ˆν•œ λ‹¨μœ„λ‘œ λ‚˜λˆ„κ³  숫자 아이디λ₯Ό λΆ€μ—¬ν•˜λŠ” 것
   2) λ‚΄μš©
     - ν•œκΈ€μ€ μž‘κ²Œ (자음과λͺ¨μŒ) λ‹¨μœ„λΆ€ν„° 크게 단어 λ‹¨μœ„λ‘œ λ‚˜λˆŒμˆ˜ μžˆλ‹€
     - μ–΄λ–€ 토큰이 μ–΄λ–€ 숫자 μ•„μ΄λ””λ‘œ μ—°κ²°λλŠ”μ§€ 기둝된 사전을 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€
       > λ‹¨μœ„κ°€ 큰 경우: 의미 μœ μ§€λŠ” 잘 λ˜μ§€λ§Œ 사전이 컀진닀.
       > λ‹¨μœ„κ°€ μž‘μ€ 경우: 사전은 μž‘μ•„μ§€μ§€λ§Œ, λ‹¨μ–΄μ˜ μ˜λ―Έκ°€ 사라진닀.

  2. μ„œλΈŒμ›Œλ“œ 토큰화
   1) κ°œλ…: λ°μ΄ν„°μ˜ λ“±μž₯ν•˜λŠ” λΉˆλ„μ— 따라 ν† κ·Όν™” λ‹¨μœ„λ₯Ό κ²°μ •
   2) λ‚΄μš©
     - κΈ°μ‘΄ ν† ν°ν™”μ˜ 사전 λ‹¨μœ„ 문제 보완
     - 자주 λ‚˜μ˜€λŠ” 경우: 단어 λ‹¨μœ„ κ·ΈλŒ€λ‘œ μœ μ§€
     - 자주 λ‚˜μ˜€μ§€ μ•ŠλŠ” 경우: 더 μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ”


βœ”οΈ ν† ν°ν™” μƒ˜ν”Œ μ½”λ“œ

# ν…μŠ€νŠΈλ₯Ό μ μ ˆν•œ λ‹¨μœ„λ‘œ λ‚˜λˆ” (띄어쓰기 κΈ°μ€€)
input_text = "λ‚˜λŠ” 졜근 파리 여행을 λ‹€λ…€μ™”λ‹€"
input_text_list = input_text.split()

print(input_text_list) # ['λ‚˜λŠ”', '졜근', '파리', '여행을', 'λ‹€λ…€μ™”λ‹€']

# 토큰 (숫자ID λΆ€μ—¬)
# 아이디 λ”•μ…”λ„ˆλ¦¬μ™€ 아이디
str2idx = {word:idx for idx, word in enumerate(input_text_list)} 
# 토큰 λ”•μ…”λ„ˆλ¦¬ λ§Œλ“€κΈ°
idx2str = {idx:word for idx, word in enumerate(input_text_list)} 

print(str2idx) # {'λ‚˜λŠ”': 0, '졜근': 1, '파리': 2, '여행을': 3, 'λ‹€λ…€μ™”λ‹€': 4}
print(idx2str) # {0: 'λ‚˜λŠ”', 1: '졜근', 2: '파리', 3: '여행을', 4: 'λ‹€λ…€μ™”λ‹€'}

# 토큰을 토큰 μ•„μ΄λ””λ‘œ λ³€ν™˜
input_ids = [str2idx[word] for word in input_text_list]
print(input_ids) # [0, 1, 2, 3, 4]

 

 

🐢 λŠλ‚€μ 

1. λ‹΅λ‹΅ν•œ 상황이 λ„˜ λ§Žλ‹€..