πŸ“š μŠ€ν„°λ””/NLP

[ν…μŠ€νŠΈλ§ˆμ΄λ‹] 2-1. ν…μŠ€νŠΈ ν‘œν˜„κ³Ό λ¬Έμ„œ μœ μ‚¬λ„

μž₯μ˜μ€€ 2023. 6. 19. 17:01

ν…μŠ€νŠΈλ§ˆμ΄λ‹ μŠ€ν„°λ”” 두 번째 μ£Όμ°¨μ—λŠ” BoW와 N-gram, TF-IDF, Euclidian Distance와 Cosine Similarity 등에 κ΄€ν•΄ ν•™μŠ΅ν–ˆλ‹€.

μžμ„Έν•œ μ½”λ“œλ“€μ€ κΉƒν—ˆλΈŒ μ°Έκ³ ν•˜κΈΈ λ°”λž€λ‹€.


1. ν…μŠ€νŠΈλ₯Ό 숫자둜 ν‘œν˜„ν•˜λŠ” 방법

ν…μŠ€ν‹€μ„ 숫자둜 ν‘œν˜„ν•˜λŠ” λ°©λ²•μ—λŠ” κ΅­μ†Œ ν‘œν˜„κ³Ό 연속 ν‘œν˜„μ΄ μžˆλ‹€.

κ΅­μ†Œ ν‘œν˜„μ—λŠ” BoW, N-gram, One-hot Vector이 ν¬ν•¨λ˜λ©°, 연속 ν‘œν˜„μ—λŠ” LSA, Word2Vec, Glove 등이 ν¬ν•¨λœλ‹€.

이 쀑, κ΅­μ†Œ ν‘œν˜„μΈ BoW에 λŒ€ν•΄ μ€‘μ μ μœΌλ‘œ ν•™μŠ΅ν–ˆλ‹€.

 

2. Bow

BoWλž€, Bag of Words의 μ•½μžλ‘œ, λ‹¨μ–΄μ˜ λ“±μž₯ μˆœμ„œλ₯Ό κ³ λ €ν•˜μ§€ μ•ŠλŠ” λΉˆλ„μˆ˜ 기반의 단어 ν‘œν˜„ 방법이닀.

BoWλŠ” λ‹€μŒ 두 가지 νŠΉμ§•μ„ μ§€λ‹Œλ‹€:

  1. 각 단어에 κ³ μœ ν•œ μ •μˆ˜ 인덱슀λ₯Ό λΆ€μ—¬ν•œλ‹€.
  2. 각 인덱슀의 μœ„μΉ˜μ— 단어 ν† ν°μ˜ λ“±μž₯ 횟수λ₯Ό κΈ°λ‘ν•œ 벑터λ₯Ό λ§Œλ“ λ‹€.

λ‹€μŒκ³Ό 같이 μ˜ˆμ‹œλ₯Ό λ“€μ–΄ 보자:

text = '이해 쏙쏙 ν…μŠ€νŠΈλ§ˆμ΄λ‹ 정말 정말 μž¬λ―Έμžˆμ–΄μš”' 이라고 ν•˜μž.

각 단어에 고유 μ •μˆ˜ 인덱슀λ₯Ό λΆ€μ—¬ν•΄λ³΄μž:

Bag에 λ‹΄κ³  각 인덱슀의 μœ„μΉ˜μ— 단어 ν† ν°μ˜ λ“±μž₯ 횟수λ₯Ό μž‘μ„±ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€:

μ΄λ ‡κ²Œ, μΆ”μΆœλœ λ‹¨μ–΄λ“€λ‘œ λ‹€μŒκ³Ό 같은 벑터λ₯Ό λ§Œλ“€ 수 μžˆλ‹€:

μ΄λŸ¬ν•œ μž‘μ—…μ΄ BoWλ₯Ό λ§Œλ“  것이닀.

μ΄λ ‡κ²Œ μ„œλ‘œ λ‹€λ₯Έ λ¬Έμ„œλ“€μ˜ BoWλ₯Ό κ²°ν•©ν•΄μ„œ λ§Œλ“  것을 DTM이라고 ν•©λ‹ˆλ‹€.

3. DTM

λ¬Έμ„œ 단어 ν–‰λ ¬(Document-Term Matrix, DTM)μ΄λž€ λ‹€μˆ˜μ˜ λ¬Έμ„œμ—μ„œ λ“±μž₯ν•˜λŠ” 각 λ‹¨μ–΄λ“€μ˜ λΉˆλ„λ₯Ό ν–‰λ ¬λ‘œ ν‘œν˜„ν•œ 것을 λ§ν•œλ‹€.

μ‰½κ²Œ μƒκ°ν•˜λ©΄ 각 λ¬Έμ„œμ— λŒ€ν•œ BoWλ₯Ό ν•˜λ‚˜μ˜ ν–‰λ ¬λ‘œ λ§Œλ“  κ²ƒμœΌλ‘œ 생각할 수 μžˆλ‹€.

λ‹€μŒκ³Ό 같은 예λ₯Ό λ“€μ–΄λ³΄μž:

  • text1 : λ¨Ήκ³  싢은 사과
  • text2 : λ¨Ήκ³  싢은 λ°”λ‚˜λ‚˜
  • text3 : κΈΈκ³  λ…Έλž€ λ°”λ‚˜λ‚˜ λ°”λ‚˜λ‚˜
  • text4 : μ €λŠ” 과일이 μ’‹μ•„μš”

μœ„ λ¬Έμž₯듀을 띄어쓰기 λ‹¨μœ„λ‘œ 토큰화λ₯Ό μ§„ν–‰ν•˜κ³ , λ¬Έμ„œ 단어 ν–‰λ ¬λ‘œ ν‘œν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€:

text1 0 0 0 1 0 1 1 0 0
text2 0 0 0 1 1 0 1 0 0
text3 0 1 1 0 2 0 0 0 0
text4 1 0 0 0 0 0 0 1 1

μ΄λ ‡κ²Œ 각 λ¬Έμ„œμ—μ„œ λ“±μž₯ν•œ λ‹¨μ–΄μ˜ λΉˆλ„λ₯Ό ν–‰λ ¬μ˜ κ°’μœΌλ‘œ ν‘œκΈ°ν•œλ‹€.

DTM은 λ¬Έμ„œλ“€μ„ μ„œλ‘œ 비ꡐ할 수 μžˆλ„λ‘ μˆ˜μΉ˜ν™”ν•  수 μžˆλ‹€λŠ” μ μ—μ„œ 의의λ₯Ό κ°–λŠ”λ‹€. 

 

κ·ΈλŸ¬λ‚˜ 이런 DTM에도 λ¬Έμ„œμ— 많이 λ“±μž₯ν•˜λŠ” 단어가 λΉ„μŠ·ν•˜λ©΄ 두 λ¬Έμ„œκ°€ μœ μ‚¬ν•˜λ‹€λŠ” κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€λŠ” 문제점이 μžˆλ‹€. 이에 λŒ€ν•΄, λͺ¨λ“  λ¬Έμ„œμ—μ„œ 많이 λ“±μž₯ν•˜λŠ” λ‹¨μ–΄μ˜ 영ν–₯λ ₯을 μ€„μ΄μžλŠ” ν•΄κ²°λ°©μ•ˆμ΄ λ‚˜μ˜€κ²Œ λ˜μ—ˆλ‹€. 이 κ°œλ…μ„ TF-IDF라고 ν•œλ‹€.

4. TF-IDF

TF-IDFλŠ” λ‹¨μ–΄μ˜ λΉˆλ„μ™€ μ—­ λ¬Έμ„œ λΉˆλ„λ₯Ό μ‚¬μš©ν•˜μ—¬ DTM λ‚΄μ˜ 각 λ‹¨μ–΄λ“€λ§ˆλ‹€ μ€‘μš”ν•œ 정도λ₯Ό κ°€μ€‘μΉ˜λ‘œ μ£ΌλŠ” 방법이닀. 이 방법은 주둜 λ¬Έμ„œμ˜ μœ μ‚¬λ„λ₯Ό κ΅¬ν•˜λŠ” μž‘μ—…, 검색 μ‹œμŠ€ν…œμ—μ„œ 검색 결과의 μ€‘μš”λ„λ₯Ό μ •ν•˜λŠ” μž‘μ—…, λ¬Έμ„œ λ‚΄μ—μ„œ νŠΉμ • λ‹¨μ–΄μ˜ μ€‘μš”λ„λ₯Ό κ΅¬ν•˜λŠ” μž‘μ—… 등에 쓰인닀.

 

TF-IDFμ—μ„œ TFλž€ Term Frequency의 μ•½μžλ‘œ, ν•œ λ¬Έμ„œ λ‚΄μ˜ λ‹¨μ–΄μ˜ λΉˆλ„λ₯Ό λœ»ν•˜κ³ ,

DFλž€ Document Frequency의 μ•½μžλ‘œ, μ˜€μ§ νŠΉμ • 단어 tκ°€ λ“±μž₯ν•œ λ¬Έμ„œμ˜ 수λ₯Ό λœ»ν•˜κ³ , 

IDFλž€ Inverse Document Frequency의 μ•½μžλ‘œ, μ–΄λ–€ 단어가 λ“±μž₯ν•œ λ¬Έμ„œμ˜ λΉˆλ„μ˜ μ—­μˆ˜λ₯Ό λœ»ν•œλ‹€.

IDF의 κ°œλ…μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž. μš°μ„  식은 λ‹€μŒκ³Ό κ°™λ‹€:

idf의 식

μ—¬κΈ°μ„œ n은 μ΄λ¬Έμ„œμ˜ μˆ˜μ΄λ‹€.

μ΄λ•Œ 둜그λ₯Ό μ·¨ν•΄μ£ΌλŠ” μ΄μœ λŠ”, n이 λ„ˆλ¬΄ μ»€μ§€κ²Œ 될 경우, 값을 scaling ν•΄μ£ΌκΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 것이닀.

μ΄λ ‡κ²Œ κ΅¬ν•œ tf와 idfλ₯Ό κ³±ν•œ 값을 tf-idf라고 ν•œλ‹€.

TF-IDF의 식

μ΄λ ‡κ²Œ BoW에 κΈ°λ°˜ν•˜μ—¬ DTM, TF-IDF처럼 단어λ₯Ό μˆ˜μΉ˜ν™”ν•˜λŠ” 방법에 λŒ€ν•΄ ν•™μŠ΅ν–ˆλ‹€. μ΄λ ‡κ²Œ μˆ˜μΉ˜ν™”ν•œ 방법에 이어 λ¬Έμ„œμ˜ μœ μ‚¬λ„λ₯Ό κ΅¬ν•΄λ³΄μž. λŒ€ν‘œμ μœΌλ‘œ 2가지 방법이 μžˆλ‹€.

  1. μœ ν΄λ¦¬λ””μ•ˆ μœ μ‚¬λ„
    • 두 λ²‘ν„°μ˜ 거리가 κ°€κΉŒμšΈμˆ˜λ‘ μœ μ‚¬ν•˜λ‹€.
  2. 코사인 μœ μ‚¬λ„
    • 두 벑터가 μ΄λ£¨λŠ” 각도가 0에 κ°€κΉŒμšΈμˆ˜λ‘ μœ μ‚¬ν•˜λ‹€.

μ—¬κΈ°μ„œ 코사인 μœ μ‚¬λ„μ— κ΄€ν•΄ μ„€λͺ…ν•˜μžλ©΄, 고등학ꡐ λ•Œ λ²‘ν„°μ˜ λ‚΄μ μ—μ„œ μ‚¬μž‡κ°μ„ κ΅¬ν•œ 방식과 λΉ„μŠ·ν•˜κ²Œ κ³„μ‚°λœλ‹€. 식은 λ‹€μŒκ³Ό κ°™λ‹€:

코사인 μœ μ‚¬λ„ 곡식

μ΄λ ‡κ²Œ, μ΄λ²ˆμ— ν…μŠ€νŠΈ λ‚΄μ˜ 단어듀을 숫자둜 ν† ν°ν™”μ‹œν‚€λŠ” 방식과, ν•΄λ‹Ή μˆ«μžλ“€μ„ 기반으둜 μœ μ‚¬λ„λ₯Ό κ΅¬ν•˜λŠ” 방식에 κ΄€ν•΄ κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³΄μ•˜λ‹€.