본문 바로가기
MLOps/NLP

[NLP] Retriver에서 사용되는 비교분석(Comparative Analysis)

by Finn# 2024. 11. 10.
728x90

Intro

형태소 분석 이후 배울 내용은 비교분석입니다. 비교분석은 리트리버(Retriever) 시스템에서 중요한 역할을 합니다. 특히, 정보 검색이나 문서 검색 시스템에서 다양한 정보를 비교하고 분석하는 과정에서 얻은 정보는 매우 중요하게 사용됩니다. ODQA같은 Task에 대해서 정리할 때, 적절한 Document를 선정하는 리트리버 시스템에서 비교분석이 적용될 수 있습니다. 따라서 두 Corpus를 비교하는 원리에 대해서 명확하게 이해하고 정보검색의 한 분야인 Retriver에서 이를 적용해보겠습니다.

비교분석은 일종의 Metric으로 유용하게 사용된다.

비교분석에서 사용되는 공식들은 Retriver같은 Task를 수행할 때 Metric으로 유용하게 사용됩니다. 보통 많이 사용되는 공식으로는 로그오즈비와 TF-IDF, BM25가 있습니다. 이들은 각기 수식으로 이뤄져있기에 해당 Corpus에 대한 비교를 정량적으로 수행할 수 있습니다. 자연어 처리를 할 때 어떤 근거로 Metric을 사용했는지도 굉장히 중요하다고 배웠기에 이번 시간을 통해 각 Metric이 어떤 원리인지, 어떤 차이가 있는지 확인해보겠습니다.

  • 로그오즈비는 주로 이진 분류 문제에서 특정 단어가 두 범주 간에 얼마나 중요한지 비교할 때 유용합니다.
  • TF-IDF는 문서 내에서 중요한 단어를 평가하는 데 적합하며, 정보 검색 및 추천 시스템에서 많이 사용됩니다.
  • BM25는 정보 검색에서 쿼리와 문서 간의 관련도를 평가할 때 매우 효과적이며, TF-IDF를 확장한 모델로 문서 길이 보정과 빈도 처리에 강점이 있습니다.

LOR : log + odds

odds에 log를 씌운 값은 logit이라고 합니다. 그리고 odds ratio에 log를 씌우면 분자와 분모를 선형적으로 분리하여 선형식을 만들 수 있습니다. 선형식을 이루는 각 항의 의미를 해석 및 비교하는 식으로 분석에 활용되고 있습니다. odds ratio에 log를 씌운 것은 Log Odds Ratio의 두문자를 따서 LOR이라고 부릅니다.

 

odds라고 하는 것은 확률과는 다른 개념이 대상의 가능성 나타내는 하나의 측도입니다. 오즈비는 두 대상의 비를 나타내는 값으로 분수의 형태를 띄고 있습니다. 따라서 이 값에 log를 씌울 경우 분자 - 분모 꼴로 바뀌어서 하나의 선형식으로 해석할 수 있습니다. 


TF-IDF 

Term Frequency와 Identified Documents Frequency입니다. 정말 용어 그대로 해석하면 좋습니다.

Term을 기준으로 2가지를 측정합니다. 먼저 TF항은 한 Doc 기준 전체 Term에 대해서 해당 Token이 얼마나 많이 나왔는지 빈도를 계산합니다. 두번째 IDF는 전체 Documents에서 해당 Term이 등장한 빈도를 계산합니다. 이 두 Frequency를 곱해서 하나의 값으로 만들면 단순히 어떤 문서에서 단어가 많이 나왔는지만 고려하는 것이 아니라 해당 단어가 다뤄지는 빈도도 고려해서 특정 Token에 대해서 희귀도와 빈도를 정량적으로 나타낼 수 있습니다. 전체 Docs들과 하나의 Doc 내에서의 TF를 모두 고려하여, 하나의 Token을 하나의 Score로 표현할 수 있습니다.

 


Retriver에 TF-IDF 적용하기

하나의 Token이 하나의 조건부 Score로 변환될 수 있다면 각 Token을 하나의 차원으로 둔 Vector로 만들어서 이를 문서별로 추출한 TF-IDF Vector와의 유사도를 비교해보고 유사도가 높은 문서를 추출하는데도 사용할 수 있을 겁니다. 이런 정보 검색에 활용되는 모델을 Retriver라고 부릅니다. 이 Retriver에 대해서 이해하려면 아래 과정들을 이해해야합니다. 

 

TF-IDF를 적용하기 위해 존재하는 데이터에 대해서 설명하겠습니다.

1. Corpus : 여러 Docs 이뤄진 데이터

2. 정보 검색을 위해 작성한 Query : text data

 

우선 정보검색을 위해  각 데이터에 대해 적절히 이뤄져야할 전처리 과정에 대해서 설명해보겠습니다. 먼저 corpus 데이터를 전부 소문자로 변경해주고 이들을 형태소 단위의 Token으로 만들어줍니다. 또한 분석에 사용하지않을 token들을 제거해주는 불용어 처리 작업도 수행해줍니다. Query 데이터에 대해서도 동일한 작업을 수행해줍니다.

 

이후 Query의 TF-IDF 값을 구합니다.

 

그리고 각 Token 별로 하나의 차원을 갖고 값은 TF-IDF를 가지는 Vector를 생성합니다.

 

다음으로는 Document별로 Query를 합쳐서 다시 한번 TF-IDF값을 구합니다 .

여러 개의 Documents에 대한 TF-IDF를 구하고 싶다면 각각의 문서에 Query를 따로 결합해준 후에 TF-IDF를 계산합니다.

이렇게 되면 행 머리글에는 모든 문서들에 포함된 Token들을 두고 열 머리글에는 각각의 문서를 두어 TF-IDF Matrix를 정의할 수 있습니다. 이때 한가지 의문이 들 수 있습니다.

 

왜 Query를 더하는가?

 

문서 뒤에 Query를 더하는 이유는 무엇인가요?
실제 Document 내에 Query에서 사용된 Token을 포함하고 있지 않을 경우 TF-IDF vector를 만들때 해당 차원의 값을 채워넣을 수 없는데 이때 Query를 뒤에 더하면 기본적으로 TF-IDF Vector를 구할 때 모든 Docs에 대해서 동일한 TF-IDF 차원을 맞춰줄 수 있습니다. 

 

이후 동일하게 Query에서 사용된 값에 대해서만 Vector를 구합니다.

 

이렇게 생성된 Query Vector와 Docs Vector 들간 Smiliarity를 구합니다.

일반적으로 문서별로 생성된 Vector와 Query의 Vector의 Cosine Similarity를 구합니다.

 

계산된 Similarity값들을 비교하여 가장 큰 값을 가지는 문서를 추출합니다. 


Retriver에 대한 기타 방법론

이외에도 BM25나 DPR같은 여러가지 방법론들이 더 존재하지만 이번 시간에는 딱 이정도까지만 다루고 다음 칼럼에서 NLU에 대해서 비교분석을 활용하는 예시에 대해서 소개하겠습니다. 혹여 이번 시간에 이해가 잘 안가신 분들은 Logit과 TF-IDF의 쓰임에 대해서 NLU 시간에 정리한 내용을 정독한 후에 다시 한번 확인해보시면 좋을 것 같습니다.


Outro

다음 칼럼에서는 NLU 기법인 감성 분석에 대해서 배워보겠습니다. 감성분석은 doc이나 일종의 패턴을 파악하는 용도로 많이 사용된다고 합니다. 

인스타 주소 🎗

https://www.instagram.com/f.inn_sharp/

반응형