04_NLP(Natural Language Processing)자연어처리/LLM

카운트 기반 언어모델

jiniby 2025. 2. 4. 17:46
728x90

✅ 카운트 기반의 단어 표현

 

☑️ 단어의 표현 방법

 

✔️ 국소 표현 vs 분산 표현

카운트 기반 단어표현 (NLP 2팀)(작성중..)
분산표현(Distributed Representation, word2Vec, FastText)

•국소 표현(Local Representation): 해당 단어 그 자체만 보고, 특정 값을 (인덱스로) 맵핑하여 단어를 표현하는 방법

예) 고양이: 1, 귀여운: 2, 동물: 3
- One hot encoding 방식 : 각 단어는 벡터의 하나의 차원에 해당하며 해당 단어를 나타내는 위치에만 1을 둠 
- 높은 차원 각차원 독립적 , 단어간의 의미적 관계를 직접적으로 나타낼수 없다

•분산 표현(Dense Representation): 그 단어를 표현하고자 주변을 참고하여 단어를 표현하는 방법 예) ‘고양이’ 단어 주변에 ‘귀여운’과 ‘동물’이 자주 등장 => 고양이는 귀엽다, 동물이다로 인식

ex) word embeding 
- 저차원,  각 차원은 단어의 의미적 특성을 나타냄. 각 단어의 의미적 유사성을 벡터 공간에서의 거리로 나타낼수 있다.

 

TF-IDF

tf : 하나의 문장에 어떤 단어가 얼마나 등장했는지(DTM)

df : 문서에서 어떤 단어의 등장 빈도 수

Idf : df 역수 여러 문서에서 반복적으로 등장한 단어의 가중치를 낮추는 역할

 

✔️ 단어 표현 방법의 범주

단어 표현 - 어떻게 자연어를 컴퓨터에게 인식시킬 수 있을까 ?

☑️ Bag of Words(BoW)

 

✔️ Bag of Words

•단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법

•어휘의 빈도(개수)를 기반으로 통계적 언어 모델을 적용해서 나타낸 것 => 국소 표현에 해당

 

✔️ Bag of Words의 구성 방법

• ① 문서 내 단어별로 고유의 정수 인덱스를 할당하여 단어 집합(Vocabulary) 생성

• ② 단어별 인덱스에 단어의 출현 빈도를 저장한 BoW 벡터 생성

Bag Of Words in Machine Learning with Python | Aman Kharwal

✔️ Bag of Words의 특징

•임베딩 벡터의 차원 = 단어의 개수 = 모델의 크기
-> one hor encoding 동일

• 등장하는 단어가 많아질수록 증가

• N-gram의 n이 커질수록 증가

장점 : 구현이 간단 

단점 : 단어와 순서가 문맥을 무시 -> 문장의 의미를 표시 할 수 없다 

( 카운트 기반의 단어 표현을 약점 보완은 의미기반 단어 표현)

•단어의 분절이 정확하게 되었을 때 유용

•단어의 여러 의미를 반영하지 못함

=> 동음이의어, 다의어에 대한 의미 표현 불가

✅ TF-IDF

☑️ TF-IDF 개요

 

✔️ TF-IDF

• Term Frequency (TF): 단어의 등장빈도

• Inverse Document Frequency (IDF): 단어가 제공하는 정보의 양

 

• ex) He is the president of UK.

→ He, is, the, of: 자주 등장하지만 제공하는 정보량이 적음

→ president, UK: 좀 더 많은 정보를 제공 단어마다 제공하는 정보량이 서로 다르다는 것을 통계적으로 계산함

Term Frequency Inverse Document Frequency (TF-IDF) Explained

✔️ Inverted Index(역 인덱스) 

• 불용어 (stopword)
• 모든 문서에 자주 사용되어 색인어로 문서를 구분해주는 가치가 없는 어휘

• 예) “in”, “the”, “and”

• Map 형식의 자료구조에 inverted index를 저장

• Key: term / word

• Value: 문서빈도 수, term 빈도수, 위치

 

검색엔진에서 문서를 효율적으로 검색하기 위해 사용되는 데이터 구조 

- 각 단어가 어떤 문선에 포함되어있는지 빠르게 찾을수 있음

✔️ Comparison Function (연관성)

•질의(query)와 문서(document) 사이의 관련성의 정도를 계산
• Query와 inverted index의 term을 비교하여 문서를 검색하고 순위화
• 실시간으로 계산

• Term 빈도수 (Term frequency)
가정: 사용자가 입력한 query와 매칭하는 term의 빈도수가 높을수록 query와 해당 document 연관성이 높음
• 예) query: fish => “fish”를 포함한 문서 및 term 빈도수
• If Doc1의 “fish” 빈도수: 1, Doc2의 “fish” 빈도수: 2
=> 연관성(“fish”, Doc2) > 연관성(“fish”, Doc1)

 

✔️ 문서 내 term 위치

•가정: 사용자가 입력한 query가 2 개 이상인 경우, query가 문서 내에서 가까운 곳에 위치하는 경우
=> query와 해당 document 사이의 연관성이 높음


•예) query: [“red”, “fish”]
  • “red”, “fish”가 동시에 나타나는 문서: Doc1, Doc2
  • Doc1에서 [“red”, “fish”] 사이의 거리: 1
  • Doc2에서 [“red”, “fish”] 사이의 거리: 2
  • 연관성([“red”, “fish”], Doc1) > 연관성([“red”, “fish”], Doc2)

 

✔️ 문서-단어 행렬(Document-Term Matrix)

 

•문서에서 등장하는 각 단어들의 빈도나 특성을 반영한 행렬 

• BoW나 TF-IDF를 실제로 활용하기 위해 행렬의 형식으로 표현

•여러 문서가 가진 단어들을 하나의 행렬에서 표현

문서의 의미를 나타내는 가장 기본적인 단위로 텍스트마이닝 분야에서 전체문서와 단어 사이의 포함을 나타냄 - 분류 , 군집화, 요약에 활용 

행 (역문서빈도) : 개별 문서  /  전체 문서 수 (단어를 포함한 문서 수 )
열(단어빈도)  : 문서 집합 특정한 고유의 단어 / 문서 내 단어 수( 문서 내 모든 단어 수 ) 
값 : 각 셀에 해당하는 문서의 특정단어 얼마나 자주등장하는지에 대한 빈도수 (Bag of words /  TF-IDF) 

 

✔️ Term Frequency (TF)

•특정 문서 d에서 단어 t가 등장한 횟수
•기존의 DTM과 완전히 똑같은 개념이기 때문에 DTM 자체가 이미 TF 값

Research paper classification systems based on TF-IDF and LDA schemes | Human-centric Computing and Information Sciences | Full Text

 

✔️ Inverse Document Frequency (IDF)

• Document Frequency (DF): DF는 특정 단어 t가 등장한 문서의 수
=> Inverse Document Frequency (IDF): DF의 역수 == 단어가 제공하는 정보의 양
•단어가 모든 문서에서 너무 많이 등장 => 정보의 양이 적음. 흔한 단어

IDF =  특정단어의 idf 전체 문서수를 그 단어가 포함된 문서의 수로 나누 후에 로그취한 값

N : 전체 문서의 수 

df : 단어 t가 포함된 문서의 수 

✔️ Combine TF & IDF

• ‘a’, ‘the’, ‘of’ 등 관사 및 전치사 ⇒ TF는 높으나, IDF가 0에 근사
=> 거의 모든 document에 등장하면 N ≈ DF(t) ⇒ log(N/DF) ≈ 0
=> 낮은 TF-IDF score
• 자주 등장하지 않는 고유 명사 (ex. 사람 이름, 지명 등)
=> 높은 TF-IDF score

✔️ TF-IDF 의 활용

•기계 독해: 문서의 TF-IDF 값을 사용하여 사용자의 검색 질의와 가장 관련성이 높은 문서를 찾음

•문서 요약: 문서의 각 단어에 대한 TF-IDF 값을 계산하여, 문서의 주요 내용을 파악. 이를 통해 자동으로 문서 요약을 생성하고, 요약된 정보를 제공

 

•문서 군집화: 비슷한 주제 또는 유사한 내용을 가진 문서들은 유사한 단어들을 공유. 문서의 TF-IDF 값을 이용하여 문서를 군집화

 

•키워드 추출: 텍스트에서 가장 중요한 단어,TF-IDF 값이 높은 단어를 추출

✔️ BM25

 

• TF-IDF 를 기반으로, 문서의 길이까지도 고려하여 점수를 매김 ( TF-IDF 단점을 보완 ) 

• TF 값에 한계를 지정해두어 일정한 범위를 유지하도록 함

•평균적인 문서의 길이보다 더 작은 문서에서 단어가 매칭된 경우 그 문서에 대해 가중치를 부여 

(공정한 비교가 가능함) 

•현재까지도 검색엔진, 추천 시스템 등에서 빈번하게 사용되는 유사도 알고리즘

 rangking fuction 

특정 단어가 문서 내에서 지나치게 많이 출하하는 것을 패널티를 매김으로써 조금 더 로버스트하게 단어를 표현할수 있게 만든 것 

 

✔️ 왜 BM25가 더 좋을까?

 

• TF의 영향이 감소

TF에서는 단어 빈도가 높아질수록 검색 점수도 지속적으로 높아지는 반면, BM25에서는 특정 값으로 수렴

• IDF의 영향이 커짐

BM25에서는 DF가 높아지면 검색 점수가 0으로 급격히 수렴. 불용어가 검색 점수에 영향을 덜 미침

•문서 길이의 영향이 줄어듬

BM25에서는 문서의 평균 길이를 계산에 사용해 정규화. 문서의 길이가 검색 점수에 영향을 덜 미침

728x90