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

[TF-IDF] 2.

by 큌 2024. 4. 23.
반응형

1.Document frequency, continued

  • 문서 빈도(Document Frequency, df)는 전체 문서 집합에서 특정 용어가 나타나는 문서의 수를 나타냅니다.
  • 일반적으로 흔한 용어는 드문 용어보다 정보를 제공하는 데 있어 덜 유용하다고 여겨집니다.
  • 예를 들어, 'high', 'increase', 'line'과 같은 자주 나타나는 쿼리 용어들은 문서 집합 내에서 빈번하게 등장합니다.
  • 이러한 용어가 포함된 문서는 해당 용어가 포함되지 않은 문서보다 관련성이 높을 가능성이 있습니다.
  • 그러나 이러한 용어들만으로는 문서의 관련성을 확실히 판단하기 어렵습니다.
  • 따라서, 우리는 흔한 용어에 대해서도 높은 긍정적 가중치를 주되, 드문 용어보다는 낮은 가중치를 부여하고자 합니다. 이를 위해 문서 빈도를 사용하여 용어의 중요도를 측정합니다.
  • 문서 빈도를 이용하면, 모든 문서에서 자주 등장하는 용어보다는 드물게 등장하는 용어에 더 높은 가치를 부여할 수 있습니다.
  • 이러한 접근 방식은 정보 검색에서 용어의 중요도를 평가하는 데 사용되며, 특히 TF-IDF(Term Frequency-Inverse Document Frequency) 같은 가중치 계산 방법에 활용됩니다.
  • TF-IDF는 용어의 문서 내 빈도(TF)와 전체 문서 집합에서의 드문 빈도(즉, 역문서 빈도, IDF)를 함께 고려하여 용어에 가중치를 부여함으로써, 자주 등장하는 용어보다는 드물게 등장하는 용어에 더 높은 가중치를 부여합니다.
  • 이를 통해 검색 결과의 정확도를 향상시킬 수 있습니다.

2.idf weight

  • IDF (Inverse Document Frequency) 가중치는 특정 용어의 문서 빈도수, 즉 그 용어가 포함된 문서의 수를 기반으로 합니다.
  • 문서 빈도수(dft)는 용어의 정보성을 반대로 측정하는 지표로, 용어가 드문 경우 더 높은 정보성을 가지고 있다고 볼 수 있습니다. 여기서 dft는 전체 문서 수 N보다 작거나 같습니다. IDF의 정의는 다음과 같습니다: [ \text{idf}t = \log{10} \left( \frac{N}{dft} \right) ]
  • 이 공식에서, N은 전체 문서의 수를 나타내고, dft는 용어 t가 포함된 문서의 수를 나타냅니다.
  • 로그를 사용하는 이유는 IDF의 효과를 "완화(dampen)"하기 위해서.
  • 즉, N/dft의 단순 비율보다 로그를 취함으로써, 빈도수가 매우 높거나 낮은 용어에 대한 가중치 차이를 조절하여, 용어의 중요성을 보다 세밀하게 반영할 수 있습니다.
  • 로그의 밑은 중요하지 않다고 합니다. 이는 로그의 밑이 달라져도 상대적인 중요도 순서는 변하지 않기 때문입니다.
  • IDF를 사용함으로써, 드물게 등장하는 용어에 더 높은 가중치를 부여하고, 자주 등장하는 용어에는 상대적으로 낮은 가중치를 부여하여, 검색 결과의 정확도를 높일 수 있습니다.

3.idf example, suppose N = 1 million

IDF (Inverse Document Frequency)의 예시를 들어, 전체 문서의 수(N)가 100만(1,000,000)이라고 가정해봅시다. 각각의 용어(t)에 대한 IDF 값을 계산하는 공식은 다음과 같습니다: [ \text{idf}t = \log{10} \left( \frac{N}{dft} \right) ] 여기서 (N)은 전체 문서의 수를 나타내고, (dft)는 특정 용어(t)가 포함된 문서의 수를 나타냅니다. 이 공식은 특정 용어의 드물게 나타날수록, 즉 (dft) 값이 작을수록 해당 용어의 IDF 값이 커지게 합니다. 이는 그 용어가 더 정보적인 가치를 가진다는 것을 의미합니다. 예를 들어, 특정 용어가 10개의 문서에서만 나타난다면, 그 용어의 (dft) 값은 10이 됩니다. 이 경우, 그 용어의 IDF 계산은 다음과 같이 됩니다: [ \text{idf}t = \log{10} \left( \frac{1,000,000}{10} \right) = \log_{10}(100,000) \approx 5 ] 이 계산을 통해, 매우 드물게 나타나는 용어는 더 높은 IDF 값을 가지게 되며, 이는 검색 결과의 정확도를 높이는 데 도움을 줍니다. 반면에, 많은 문서에서 자주 나타나는 용어는 낮은 IDF 값을 가지게 됩니다.

4.Effect of idf on ranking

  • IDF (Inverse Document Frequency)는 문서 검색에서 특정 용어의 중요성을 평가하는 데 사용되는 지표입니다. 그러나, 한 개의 용어만으로 이루어진 쿼리에 대해서는 IDF가 순위에 영향을 미치지 않습니다. 예를 들어, 'iPhone'과 같은 단일 용어 쿼리의 경우, 모든 문서는 동일한 IDF 가중치를 받으므로, IDF는 순위 결정에 영향을 주지 않습니다. 반면에, 적어도 두 개의 용어가 포함된 쿼리의 경우, IDF는 문서 순위에 영향을 줍니다. 예를 들어, "capricious person"과 같은 쿼리에서는 'capricious'와 'person'이라는 두 용어의 IDF 가중치가 다릅니다. 'capricious'는 일반적으로 'person'보다 문서 집합에서 덜 자주 등장하기 때문에 더 높은 IDF 값을 가질 것입니다. 따라서, 'capricious' 용어의 발생은 'person' 용어의 발생보다 최종 문서 순위에 더 큰 영향을 미치게 됩니다. 이는 더 드문 용어가 쿼리와 관련된 문서를 찾는 데 더 중요한 정보를 제공하기 때문입니다. 결론적으로, IDF 가중치는 두 개 이상의 용어로 이루어진 쿼리에서 문서의 순위를 결정하는 데 중요한 역할을 합니다. 이를 통해 사용자는 자신의 검색 쿼리와 더 관련성 높은 문서를 찾을 수 있게 됩니다.

5.Collection vs. Document frequency

컬렉션 빈도수(collection frequency)와 문서 빈도수(document frequency)는 정보 검색에서 중요한 개념입니다. 컬렉션 빈도수는 특정 용어 t가 전체 컬렉션에서 몇 번 나타나는지를 나타내며, 여러 번 나타나는 경우를 모두 계산합니다. 반면, 문서 빈도수는 특정 용어 t가 몇 개의 문서에서 나타나는지를 나타내는 지표입니다. 검색 용어로서 어떤 단어가 더 나은지(그리고 더 높은 가중치를 받아야 하는지)를 결정할 때, 일반적으로 문서 빈도수가 더 중요한 고려사항입니다. 이유는 문서 빈도수가 용어의 희귀성을 더 잘 반영하기 때문입니다. 예를 들어, 매우 빈번하게 나타나는 용어는 정보를 구별하는 데 도움이 되지 않는 경우가 많으며, 따라서 검색 용어로서의 가치가 낮습니다. 반면, 적은 수의 문서에서만 나타나는 용어는 그 용어가 포함된 문서가 특정 주제나 콘텐츠와 강하게 연관되어 있음을 더 잘 나타낼 수 있으므로 더 높은 가중치를 받아야 합니다. 따라서, 문서 빈도수가 낮은 용어, 즉 더 희귀한 용어는 검색 용어로서 더 나은 선택이며 더 높은 가중치를 받아야 합니다. 이는 정보 검색에서의 중요성과 관련성을 더 잘 반영하기 때문입니다.

6.tf-idf weighting

TF-IDF 가중치는 정보 검색에서 가장 잘 알려진 가중치 계산 방법 중 하나입니다. 이 방법은 특정 용어의 'TF(Term Frequency, 용어 빈도)' 가중치와 'IDF(Inverse Document Frequency, 역문서 빈도)' 가중치의 곱으로 계산됩니다. 구체적으로, 용어의 TF-IDF 가중치는 다음과 같이 계산됩니다: [ w_{t,d} = \log(1 + tf_{t,d}) \times \log_{10} \left( \frac{N}{dft} \right) ] 여기서, ( tf_{t,d} )는 문서 d에서 용어 t의 빈도수입니다. ( N )은 문서 집합에 있는 전체 문서의 수를 나타냅니다. ( dft )는 용어 t가 등장하는 문서의 수입니다. TF-IDF 가중치는 문서 내 용어의 출현 빈도와 전체 문서 집합에서 해당 용어의 희귀성을 모두 고려합니다. 따라서, 문서 내에서 더 자주 등장하고, 전체 문서 집합에서 더 희귀한 용어일수록 높은 TF-IDF 가중치를 갖게 됩니다. 이러한 방식으로 TF-IDF는 특정 문서에 대해 중요하고 특징적인 용어를 식별하는 데 유용합니다. TF-IDF는 다양한 방식으로 표기될 수 있는데, 'tf-idf', 'tf.idf', 'tf x idf' 등이 그 예입니다. 이 가중치 계산 방법은 정보 검색 시스템에서 문서의 관련성을 평가하고 순위를 매기는 데 널리 사용됩니다.

7.Score for a document given a query

문서에 대한 쿼리 점수는 주어진 쿼리 (q)와 문서 (d) 사이의 관련성을 평가하는 방법입니다. 이 점수는 쿼리 (q)와 문서 (d)의 교집합에 속한 모든 용어 (t)에 대한 TF-IDF 가중치를 합산하여 계산됩니다. 계산 방식은 다음과 같습니다: [ \text{Score}(q,d) = \sum_{t \in q \cap d} \text{tf.idf}_{t,d} ] 여기서, (\text{tf.idf}_{t,d})는 문서 (d) 내에서 용어 (t)의 TF-IDF 가중치를 나타냅니다. 이 점수 계산 방식은 다양한 변형을 가질 수 있습니다. 예를 들어, TF (Term Frequency)의 계산 방법이 다를 수 있으며(로그를 사용하거나 사용하지 않는 방식), 쿼리 내의 용어들도 가중치를 부여받을 수 있습니다. 이러한 변형은 시스템이나 특정 상황의 요구에 따라 다를 수 있으며, 문서의 관련성과 중요성을 평가하는 데 도움을 줍니다. 기본적으로, 문서 점수 계산은 쿼리에 포함된 용어들이 문서 내에서 얼마나 중요한지(즉, 얼마나 자주 나타나고, 전체 문서 집합에서 얼마나 드문지)를 기반으로 문서의 관련성을 평가합니다. 따라서, 쿼리와 더 많은 공통 용어를 가지고 있고, 그 용어들이 문서 집합 전체에서 드문 문서일수록 더 높은 점수를 받게 됩니다.

8.Binary → count → weight matrix

TF-IDF (Term Frequency-Inverse Document Frequency)를 사용하여 각 문서를 실수로 구성된 벡터로 표현하는 것은 정보 검색, 문서 분류, 자연어 처리 등 다양한 분야에서 중요한 기술입니다. 이 방법을 사용하는 기본 단계는 다음과 같습니다: 문서 정의: 먼저 "문서"가 무엇인지 정의해야 합니다. 문서는 웹 페이지, 뉴스 기사, 책의 장, 또는 이메일과 같이 텍스트로 구성된 어떤 항목이 될 수 있습니다. 문서 집합에서 각 문서는 분석의 기본 단위가 됩니다. 중요 단어 찾기: 문서 집합 내에서 각 문서의 중요 단어를 식별하기 위해 TF-IDF 점수를 사용할 수 있습니다. TF-IDF 점수는 단어가 문서 내에서 자주 등장하는 동시에 전체 문서 집합에서 드물게 등장할 때 높아집니다. 이 점수를 계산함으로써, 각 문서에 대해 가장 특징적이고 중요한 단어를 찾을 수 있습니다. Binary → Count → Weight 행렬 변환: 문서의 내용을 분석할 때, 우선 각 문서에서 단어의 존재 여부를 이진(Binary) 값으로 표시합니다. 그 다음, 각 단어가 문서 내에 등장하는 횟수(Count)를 계산합니다. 마지막으로, 각 단어의 TF-IDF 가중치(Weight)를 계산하여 문서를 실수 벡터로 표현합니다. 이렇게 변환된 벡터는 문서의 내용과 중요성을 수치적으로 나타내며, 다양한 머신러닝과 데이터 분석 기법에 활용될 수 있습니다. 결론적으로, TF-IDF를 사용하여 각 문서를 실수 벡터로 표현하는 것은 문서의 중요한 특성과 내용을 파악하고, 이를 바탕으로 문서 간의 유사성을 비교하거나 문서를 분류하는 등의 작업에 매우 유용합니다.

9.How can we use it?

TF-IDF는 문서의 중요한 특성을 파악하고 문서 간의 유사성을 비교하는 데 유용한 도구입니다. 이를 활용하는 두 가지 주요 방법으로 Elastic search와 scikit-learn을 사용하는 방법이 있습니다. Elastic Search Elasticsearch는 실시간으로 데이터를 검색하고 분석할 수 있는 오픈소스 검색 엔진입니다. TF-IDF를 사용하여 문서의 중요 단어를 기반으로 빠르고 정확한 검색 결과를 제공할 수 있습니다. Elasticsearch는 내부적으로 TF-IDF와 비슷한 원리를 사용하는 BM25 알고리즘을 기본으로 사용하여 문서의 관련성을 평가합니다. 사용자가 검색 쿼리를 제출하면, Elasticsearch는 해당 쿼리와 가장 관련성이 높은 문서를 찾아 순위를 매겨 결과를 반환합니다. 이 과정에서 TF-IDF 방식이 검색 결과의 정확도를 높이는 데 기여합니다. Scikit-learn Scikit-learn은 Python 프로그래밍 언어를 위한 강력한 머신러닝 라이브러리입니다. 텍스트 데이터를 처리할 때, TF-IDF를 사용하여 문서를 벡터 공간 모델로 변환하고, 이를 통해 문서 분류, 군집화, 유사도 계산 등 다양한 머신러닝 작업을 수행할 수 있습니다. Scikit-learn에서는 TfidfVectorizer 클래스를 통해 쉽게 TF-IDF 벡터를 생성할 수 있으며, 이렇게 생성된 벡터는 머신러닝 모델의 입력으로 사용될 수 있습니다. 예를 들어, 문서 분류 작업을 수행할 때, 먼저 TfidfVectorizer를 사용하여 훈련 데이터의 텍스트를 TF-IDF 벡터로 변환합니다. 그런 다음, 이 벡터를 사용하여 분류기 모델(예: SVM, 로지스틱 회귀 등)을 훈련시킵니다. 모델이 훈련되면, 새로운 문서의 텍스트를 같은 방식으로 TF-IDF 벡터로 변환하고, 이를 모델에 입력하여 해당 문서의 카테고리를 예측할 수 있습니다. 이처럼 TF-IDF는 문서의 특성을 수치화하고, 이를 통해 검색 엔진의 검색 결과 품질을 향상시키거나 머신러닝 모델을 훈련시키는 데 중요한 역할을 합니다.

반응형

'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]  (0) 2024.04.23