본문 바로가기
Computer Science/데이터마이닝

[TF-IDF]

by 큌 2024. 4. 23.
반응형

1.Ranked retrieval

  • 랭크 검색(Ranked retrieval)과 불리언 쿼리(Boolean query).
    • 불리언 쿼리는 문서가 주어진 조건과 일치하는지 또는 일치하지 않는지를 판단하는 검색 방법.
      • 이 방식은 사용자가 자신의 필요와 컬렉션에 대해 정확하게 이해하고 있을 때, 또는 특정 애플리케이션에서 수천 개의 결과를 쉽게 처리할 수 있을 때 유용.
      • 예를 들어, 사용자가 '고양이 AND 검정'과 같은 쿼리를 입력하면, 오직 '고양이'와 '검정'이라는 단어를 모두 포함하는 문서만을 결과로 반환.
        • 이 방식은 매우 정확한 검색을 원하는 전문 사용자나, 특정 애플리케이션에서 매우 유용.
      • 그러나 대부분의 사용자에게는 이러한 방식이 그다지 적합하지 않음.
        • 불리언 쿼리를 작성하는 것은 대부분의 사용자에게 어렵거나 번거롭다.
      • 또한, 사용자는 대개 수천 개의 검색 결과를 모두 살펴보고 싶어하지 않음.
        • 특히 웹 검색의 경우, 대부분의 사용자는 더 간단하고 직관적인 검색 방법을 선호.
    • 이러한 이유로, 랭크 검색이 더 널리 사용.
      • 랭크 검색에서는 문서가 쿼리와 얼마나 관련이 있는지에 따라 순위를 매김.
      • 이 방식은 사용자가 쿼리와 가장 관련이 높은 문서를 먼저 볼 수 있게 해줌.
      • 랭크 검색은 사용자가 효율적으로 정보를 찾을 수 있게 해주며, 불리언 쿼리의 복잡성과 대량의 결과를 필터링하는 데 드는 수고를 줄여줌.

2.Problem with Boolean search: feast or famine

  • Boolean 검색에는 "풍요 또는 기근"이라는 문제.
    • 즉, Boolean 쿼리는 종종 너무 적은 결과(=0) 또는 너무 많은 결과(수천 개)를 초래.
      • 예를 들어, "standard user dlink 650"라는 쿼리 1은 200,000개의 결과를 가져올 수 있지만, "standard user dlink 650 no card found"라는 쿼리 2는 0개의 결과를 가져올 수 있다.
        • 이는 적절한 수의 결과를 생성하는 쿼리를 작성하는 데 많은 기술이 필요함을 의미.
  • "AND" 연산자를 사용하면 결과가 너무 적게 나오고, "OR" 연산자를 사용하면 결과가 너무 많이 나옴.
    • 이러한 문제는 사용자가 정확히 원하는 정보를 찾기 위해 쿼리를 정교하게 조정해야 한다는 부담.
  • 너무 많은 결과는 정보의 바다에서 원하는 정보를 찾는 것을 어렵게 만들고, 결과가 없으면 사용자가 원하는 정보가 없는 것처럼 느껴질 수 있다.
    • 따라서, Boolean 검색은 특정 상황이나 전문가 사용자에게 유용할 수는 있지만, 일반적인 사용자에게는 적합하지 않을 수 있다.
      • 이러한 이유로, 많은 검색 엔진과 정보 검색 시스템은 순위 매기기 검색과 같은 더 직관적이고 사용자 친화적인 방법을 사용.

3.Ranked retrieval models

  • Ranked retrieval 모델에서는 쿼리 표현식을 만족하는 문서의 집합을 반환하는 대신, 시스템은 쿼리에 대해 컬렉션 내의 상위 문서들에 대한 순서를 반환.
    • 이 모델은 사용자가 검색하고자 하는 정보를 정확하고 효율적으로 찾도록 도와줌.
  • Free text 쿼리는 연산자와 표현식의 쿼리 언어 대신, 사용자의 쿼리가 인간의 언어로 된 하나 이상의 단어로 구성.
    • 이는 사용자가 특별한 쿼리 언어를 배울 필요 없이 자신의 언어로 직접 검색어를 입력할 수 있게 함으로써 검색 과정을 간소화하고 사용자 친화적으로 만든다.
  • 원칙적으로는 별도의 선택 사항이지만, 실제로 Ranked retrieval은 주로 Free text 쿼리와 결합되어 사용되는 경향이 있다.
    • 이러한 결합은 사용자가 복잡한 쿼리 언어나 구문을 사용하지 않고도 자연스러운 언어로 쿼리를 작성할 수 있게 하며, 시스템은 이러한 쿼리에 대한 가장 관련성 높은 문서들을 순위별로 제공.
    • 이로 인해 사용자가 원하는 정보를 쉽고 빠르게 찾을 수 있다.

4.Feast or famine: not a problem in ranked retrieval

  • Ranked retrieval 모델에서는 "Feast or Famine" 문제가 발생하지 않음.
  • 시스템이 순위가 매겨진 결과 세트를 생성할 때, 결과의 크기가 문제가 되지 않음.
  • 실제로, 결과 세트의 크기는 중요하지 않으며, 우리는 상위 k(대략 10개) 결과만 보여줌.
    • 이는 사용자를 압도하지 않고, 사용자가 필요로 하는 정보를 쉽게 찾을 수 있도록 함.
  • 이러한 접근 방식의 전제는 순위 알고리즘이 효과적으로 작동한다는 것.
  • 순위 알고리즘이 잘 작동한다면, 가장 관련성 높은 정보를 사용자에게 빠르게 제공할 수 있으며, 결과적으로 사용자는 방대한 양의 정보 속에서도 원하는 정보를 쉽게 찾을 수 있다.

5.Scoring as the basis of ranked retrieval

  • 순위 지정 검색의 기반으로 점수를 사용하는 방식은 검색자에게 가장 유용할 것으로 예상되는 문서를 순서대로 반환하고자 함.
    • 이를 위해 우리는 어떻게 컬렉션 내의 문서들을 쿼리에 대해 순위를 매길 수 있을까?
  • 각 문서에 점수를 할당하는 방식으로 이를 수행할 수 있다.
  • 이 점수는 [0, 1] 범위 내에서 할당되며, 문서와 쿼리의 "일치" 정도를 측정.
    • 즉, 각 문서는 쿼리와 얼마나 잘 일치하는지를 나타내는 점수를 받게 됨.
    • 이 점수는 높을수록 문서가 쿼리와 더 관련이 깊다는 것을 의미하고, 낮을수록 관련성이 적다는 것을 의미.
  • 결과적으로, 이 점수를 기반으로 문서들을 순위 지정함으로써 검색자는 가장 관련성 높은 문서를 빠르게 찾아볼 수 있게 됨.
    • 이러한 방식은 검색 결과의 효율성과 정확성을 크게 향상시킴.

6.Query-document matching scores

  • 쿼리-문서 일치 점수.
  • 쿼리와 문서 쌍에 점수를 할당하는 방법이 필요.
  • 먼저 단일 용어 쿼리로 시작.
    • 만약 쿼리 용어가 문서 내에 나타나지 않는 경우, 점수는 0이어야 함.
    • 쿼리 용어가 문서 내에서 더 자주 나타날수록 점수는 더 높아져야 함.
      • 이를 위해 다양한 대안.
  • 이 접근 방식은 문서가 사용자의 쿼리와 얼마나 잘 일치하는지를 평가하는 기본적인 방법.
  • 쿼리 용어의 빈도수가 높을수록 문서가 해당 쿼리와 더 관련이 깊다고 판단하여 해당 문서에 더 높은 점수를 부여.
  • 이러한 방식으로 문서들을 점수화하고 순위를 매김으로써 사용자는 자신의 검색 쿼리와 가장 관련이 깊은 문서를 쉽게 찾을 수 있게 됨.

7.Take 1: Jaccard coefficient

  • Jaccard 계수는 두 집합 A와 B 사이의 겹침을 측정하는 데 자주 사용되는 지표.
  • 이 계수는 다음과 같이 정의:
  • [ \text{jaccard}(A, B) = \frac{|A \cap B|}{|A \cup B|} ]
  • 여기서 (|A \cap B|)는 두 집합 A와 B가 공유하는 원소의 수를 나타내고, (|A \cup B|)는 두 집합의 합집합에 속하는 고유 원소의 수를 나타냅니다.
  • 예를 들어, A와 B가 정확히 같은 경우, 즉 모든 원소가 동일할 경우 Jaccard 계수는 1이 됩니다.
  • 반면에 A와 B 사이에 공통된 원소가 하나도 없다면, 즉 (A \cap B = 0)이면 Jaccard 계수는 0이 됩니다.
  • 이는 A와 B의 크기가 서로 다를 수 있음에도 불구하고, 항상 0과 1 사이의 숫자를 할당한다는 것을 의미.
  • 따라서, Jaccard 계수는 두 집합 사이의 유사성을 0(전혀 유사하지 않음)에서 1(완전히 유사함) 사이의 값으로 표현.

8.Jaccard coefficient: Scoring example

  • Jaccard 계수를 사용하여 쿼리 "ides of march"와 두 개의 문서 간의 일치 점수를 계산해 보겠습니다. 먼저, 쿼리와 각 문서에 포함된 단어들을 집합으로 나타내야 합니다.
  • 쿼리 (Q)의 단어 집합: {"ides", "of", "march"} 문서 1 (D1)의 단어 집합: {"caesar", "died", "in", "march"} 문서 2 (D2)의 단어 집합: {"the", "long", "march"}
  • 이제 각 문서에 대한 Jaccard 계수를 계산할 수 있습니다.
  • 문서 1에 대한 Jaccard 계수: [Jaccard(Q, D1) = \frac{|Q ∩ D1|}{|Q ∪ D1|} = \frac{|{"march"}|}{|{"ides", "of", "march", "caesar", "died", "in"}|} = \frac{1}{6}]
  • 문서 2에 대한 Jaccard 계수: [Jaccard(Q, D2) = \frac{|Q ∩ D2|}{|Q ∪ D2|} = \frac{|{"march"}|}{|{"ides", "of", "march", "the", "long"}|} = \frac{1}{5}]
  • 결과적으로, "ides of march" 쿼리에 대해 문서 1의 Jaccard 일치 점수는 1/6이고, 문서 2의 점수는 1/5입니다. 이는 문서 2가 쿼리와 조금 더 유사하다는 것을 의미합니다.
  • Jaccard 계수를 사용한 이러한 점수는 문서와 쿼리 사이의 유사도를 측정하는 하나의 방법입니다.

9.Issues with Jaccard for scoring

  • Jaccard 계수를 문서 점수화에 사용할 때 몇 가지 문제점.
  • 단어 빈도 무시: Jaccard 계수는 문서 내에서 특정 용어가 얼마나 자주 등장하는지 고려하지 않음.
    • 즉, 용어의 빈도를 고려하지 않기 때문에, 문서와 쿼리의 일치도를 평가하는 데 있어 한계가 있다.
  • 희귀 용어의 정보 무시: 컬렉션 내에서 드문 용어는 자주 등장하는 용어보다 더 많은 정보를 제공할 수 있습니다.
    • 그러나 Jaccard 계수는 이러한 희귀 용어의 중요성을 고려하지 않습니다.
  • 길이 정규화의 한계: Jaccard 계수는 문서의 길이를 정규화하는 데 있어서 더 세련된 방법이 필요.
  • 문서와 쿼리의 길이 차이가 결과에 영향을 미칠 수 있기 때문에, 이를 효과적으로 처리하는 것이 중요.
  • 길이 정규화를 위해 Jaccard 계수의 기존 방식인 (|A ∩ B| / |A ∪ B|) 대신에 (|A ∩ B| / 루트|A ∪ B|)를 사용하는 방안을 사용.
  • 이는 문서와 쿼리의 길이가 점수에 미치는 영향을 더 잘 조정할 수 있게 해주며, 문서 점수화 방식을 개선할 수 있다.

10.Binary term-document incidence matrix

  • 이진 용어-문서 출현 행렬과 용어-문서 개수 행렬
  • 이진 용어-문서 출현 행렬은 문서 내 특정 용어의 출현 여부를 이진 값(0 또는 1)으로 표시하는 행렬.
    • 여기서 각 행은 특정 용어를 나타내고, 각 열은 문서를 나타냅니다.
  • 특정 용어가 문서에 출현하면 해당 위치의 값이 1이 되고, 출현하지 않으면 0이 됩니다.
  • 용어-문서 개수 행렬은 이진 출현 행렬을 확장한 개념으로, 단순히 용어의 출현 여부뿐만 아니라 해당 용어가 문서 내에서 몇 번 출현하는지를 나타내는 행렬입니다.
  • 이 행렬에서도 각 행은 특정 용어를, 각 열은 문서를 나타냅니다.
  • 하지만 값은 용어의 출현 횟수를 나타내므로, 자연수(ℕv)가 됩니다.
  • 여기서 v는 용어의 전체 개수를 의미합니다.
  • 각 문서는 용어의 출현 횟수에 따라 벡터로 표현됩니다.
  • 이 개수 벡터는 문서가 갖는 용어의 분포를 나타내며, 문서 분석이나 정보 검색에서 중요한 정보를 제공합니다.
  • 용어-문서 개수 행렬을 사용함으로써, 각 문서 내에서 용어의 중요도나 문서 간의 유사성을 보다 정확히 평가할 수 있게 됩니다.

11.Bag of words model

  • Bag of Words 모델은 문서나 텍스트 데이터를 숫자 벡터로 변환하는 방법 중 하나.
  • 이 모델의 핵심 아이디어는 문서 내의 단어 순서를 무시하고, 단어의 출현 빈도만을 고려하는 것입니다.
  • 즉, 각 문서는 단어가 등장한 횟수에 따라 표현되지만, 그 단어들이 문서 내에서 어떤 순서로 나열되었는지는 고려하지 않습니다.
  • 예를 들어, "John is quicker than Mary"와 "Mary is quicker than John"이라는 두 문장이 있다고 할 때, Bag of Words 모델에서는 두 문장이 동일한 벡터로 표현됩니다.
  • 이는 두 문장 모두 같은 단어들로 구성되어 있고, 단어의 출현 빈도가 동일하기 때문입니다.
  • 이러한 특성 때문에 Bag of Words 모델은 문맥이나 문장 구조 같은 정보를 잃어버리는 단점이 있다.
    • 하지만, 문서 분류, 감성 분석, 문서 간 유사도 측정 등 다양한 자연어 처리 작업에 널리 사용되고 있다.
    • 이 모델은 구현이 간단하고, 높은 성능을 보여주는 경우가 많기 때문에 유용.

12.Term frequency tf

  • 용어 빈도수(Term Frequency, tf)는 특정 문서에서 특정 용어가 나타나는 횟수로 정의.
    • 이는 문서 내에서 용어의 중요도를 평가하는 기본적인 방법 중 하나.
  • 그러나 원시 용어 빈도수를 직접 사용하는 것은 몇 가지 이유로 인해 바람직하지 않음.
  • 문서에서 용어가 나타나는 횟수가 많다는 것은 그 용어가 해당 문서와 관련이 더 깊다는 것을 의미할 수 있습니다.
    • 예를 들어, 용어가 10번 나타나는 문서는 용어가 1번만 나타나는 문서보다 그 용어와 관련이 더 깊을 가능성이 높습니다.
  • 그러나 이 관련성은 용어 빈도수가 증가함에 따라 선형적으로 증가하지 않음.
    • 즉, 용어가 10번 나타나는 것이 1번 나타나는 것보다 10배 더 관련이 있다고 볼 수 없다.
  • 이러한 문제를 해결하기 위해, 원시 용어 빈도수를 변형하여 사용하는 여러 가지 방법이 있다.
    • 예를 들어, 로그 스케일링을 적용하여 빈도수의 선형적 증가가 아닌, 로그 함수를 사용하여 빈도수의 증가에 따른 중요도의 증가를 더 평탄하게 만들 수 있다.
    • 이는 높은 빈도수를 가진 용어의 중요도가 지나치게 과대평가되는 것을 방지합니다.
  • 또 다른 접근 방법은 TF-IDF(Term Frequency-Inverse Document Frequency)로, 용어 빈도수에 문서 빈도수의 역수를 곱하는 것.
    • 이 방법은 전체 문서 집합에서 특정 용어가 나타나는 빈도를 반영하여, 일반적인 용어보다는 특정 문서에만 자주 등장하는 용어의 중요도를 높여줌.
  • 결론적으로, 용어 빈도수를 사용하여 문서와 쿼리 간의 일치 점수를 계산할 때는 원시 용어 빈도수가 아닌, 이를 적절히 조정한 값을 사용하는 것이 중요.

13.Log-frequency weighting

  • 로그-빈도 가중치는 문서 내에서 용어의 중요도를 평가하는 한 방법.
  • 용어 (t)가 문서 (d)에서 나타나는 횟수에 따라 가중치 (w_{t,d})를 계산하는데, 이는 다음과 같이 정의됩니다.
  • [w_{t,d} = \begin{cases} 1 + \log_{10}(\text{tf}{t,d}) & \text{if } \text{tf}{t,d} > 0 \ 0 & \text{otherwise} \end{cases}]
  • 여기서 (\text{tf}_{t,d})는 용어 (t)가 문서 (d)에 나타나는 빈도수입니다.
  • 이 공식에 따르면, 용어가 한 번도 나타나지 않으면 가중치는 0이고, 용어가 한 번 나타나면 가중치는 1.
  • 빈도수가 증가함에 따라 가중치는 로그 함수를 따라 증가하지만, 이 증가율은 점차 줄어든다.
    • 예를 들어, 용어가 2번 나타나면 가중치는 약 1.3이고, 10번 나타나면 가중치는 2가 되며, 1000번 나타나면 가중치는 4가 된다.
  • 문서와 쿼리 쌍에 대한 점수를 계산할 때는 쿼리와 문서 양쪽에 모두 있는 용어들에 대해서만 고려.
  • 점수는 쿼리와 문서의 교집합에 속한 모든 용어 (t)에 대해 (1+\log_{10}(\text{tf}_{t,d}))를 더한 값으로 계산됩니다.
  • 만약 쿼리 용어가 문서에 하나도 나타나지 않으면 점수는 0이 됩니다.
  • 이 방식으로 문서와 쿼리 간의 일치도를 세밀하게 평가.

14.Document frequency

  • 문서 빈도(Document Frequency, DF)는 특정 용어가 문서 모음집 전체에서 얼마나 자주 나타나는지를 나타내는 지표.
  • 드문 용어는 자주 등장하는 용어보다 더 많은 정보를 제공한다는 것이 일반적인 관점.
    • 예를 들어, 'the', 'is', 'at'과 같은 불용어(stop words)는 거의 모든 문서에 자주 나타나므로 특정 문서의 주제나 내용을 파악하는 데 큰 도움이 되지 않음.
  • 반면에, 'arachnocentric'과 같은 드문 용어는 문서 모음집에서 드물게 나타나므로 해당 용어를 포함하는 문서는 'arachnocentric'에 대한 질의(query)와 매우 관련이 높을 가능성이 큼.
    • 따라서 이러한 드문 용어에는 높은 가중치를 부여하는 것이 바람직.
  • 이러한 이유로, 정보 검색(IR)에서는 문서 빈도를 이용하여 용어의 중요성을 평가하고, 특히 드문 용어의 가중치를 높여 검색 결과의 정확도를 향상시키려고 함.
  • 이 방법은 문서 내 용어의 빈도(Term Frequency, TF)와 결합되어 TF-IDF(Term Frequency-Inverse Document Frequency)라는 가중치 계산 방법을 만들어, 용어가 문서 모음집 전체에서 얼마나 드물게 나타나는지를 반영하여 그 용어의 가중치를 조정.
반응형

'Computer Science > 데이터마이닝' 카테고리의 다른 글

[Finding Similar Items] 2. Locality Sensitive Hashing  (0) 2024.04.24
[Finding Similar Items]  (0) 2024.04.23
[Data Preprocessing] 2.  (0) 2024.04.23
[Data Preprocessing]  (0) 2024.04.23
[TF-IDF] 2.  (0) 2024.04.23