맨위로가기

벡터 공간 모델

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

벡터 공간 모델은 문서와 질의를 벡터로 표현하여 문서 간의 유사성을 계산하는 정보 검색 모델이다. 각 단어를 차원으로 표현하며, 단어의 가중치는 TF-IDF 방식을 사용하여 계산한다. 이 모델은 문서의 관련성 순위 결정, 코사인 유사도 계산 등을 통해 키워드 검색에 활용된다. 벡터 공간 모델은 선형대수에 기반하며, 불린 모델보다 문서의 관련성을 더 정확하게 평가할 수 있지만, 긴 문서의 처리, 단어 일치 문제, 단어 순서 정보 부재 등의 한계를 갖는다. 이러한 한계를 극복하기 위해 특잇값 분해, 어휘 데이터베이스 활용 등의 방법이 사용되며, 잠재 의미 분석, 로치오 알고리즘 등 관련 모델들이 존재한다.

더 읽어볼만한 페이지

  • 벡터 공간 모델 - 명시 의미 분석
    명시 의미 분석은 텍스트 모음에서 단어와 문서 간 관계를 분석하여 단어의 의미적 관련성을 추정하는 방법으로, 위키백과 데이터를 활용해 단어를 개념 벡터로 표현하고 코사인 유사도 등으로 관련성을 측정하며, 문서 관련성 계산 등 다양한 분야에 응용된다.
  • 벡터 공간 모델 - 일반화 벡터 공간 모델
    일반화 벡터 공간 모델은 단어 간의 상관도를 고려하여 문서와 질의의 유사도를 계산하며, 단어 벡터를 여러 벡터의 선형 조합으로 표현하고 단어 간의 의미적 상관도를 계산하여 의미 정보를 처리한다.
벡터 공간 모델
개요
유형정보 검색 모델
개발 시기1960년대 후반
개발자제라드 살톤, 앤드루 윙거드, 마이클 맥길
작동 방식
기본 아이디어텍스트 문서를 벡터로 표현
벡터 요소문서에 나타나는 용어의 가중치
가중치 부여 방식용어 빈도 (TF)
역 문서 빈도 (IDF)
유사도 측정코사인 유사도
유클리드 거리
특징
장점단순하고 직관적인 모델
부분 매칭 및 순위화된 결과 제공
용어 가중치 부여를 통한 관련성 향상
단점용어 간의 의미적 관계 무시
고차원 벡터 공간으로 인한 계산 복잡도 증가
동의어 및 다의어 처리 미흡
활용 분야
정보 검색웹 검색, 문서 검색
텍스트 마이닝문서 분류, 군집화
자연어 처리의미 분석, 정보 추출
관련 개념
잠재 의미 분석 (LSA)차원 축소를 통한 의미적 정보 추출
확률적 잠재 의미 분석 (PLSA)확률 모델 기반의 잠재 의미 분석
잠재 디리클레 할당 (LDA)베이즈 통계 기반의 토픽 모델링

2. 정의

'''벡터 공간 모델'''(Vector Space Model, VSM)은 정보 검색, 정보 필터링, 자연어 처리 등에서 문서나 질의와 같은 텍스트 데이터를 수학적인 벡터로 표현하는 대수적 모델이다. 이 모델에서 각 문서는 단어들의 집합으로 간주되며, 각 단어는 벡터의 한 차원에 해당한다.[2]

문서 내 특정 단어의 중요도나 출현 빈도 등은 해당 차원의 값, 즉 단어 가중치(term weight)로 표현된다. 어떤 단어가 문서에 포함되어 있다면, 그 문서 벡터에서 해당 단어에 대응하는 값은 일반적으로 0이 아닌 값을 갖는다. 단어 가중치를 계산하는 방법에는 여러 가지가 있으며, TF-IDF가 대표적인 예시다.

이렇게 표현된 벡터들을 이용한 벡터 연산을 통해 문서들 간의 유사도를 계산하거나, 사용자의 질의 벡터와 문서 벡터 간의 유사도를 비교하여 관련성 높은 문서를 검색하는 등의 작업이 가능하다.[2] '단어(term)'의 정의는 응용 분야에 따라 달라질 수 있으며, 단순한 단어(word)뿐만 아니라 키워드나 더 긴 구(phrase)가 될 수도 있다. 벡터의 차원 크기는 분석 대상이 되는 전체 문서 집합(말뭉치)에 포함된 고유한 단어의 총 개수와 같다.

2. 1. 단어 가중치 (Term Weighting)

문서와 질의는 다음과 같이 벡터로 표현된다.

:d_j = ( w_{1,j} ,w_{2,j} , \dotsc ,w_{t,j} )

:q = ( w_{1,q} ,w_{2,q} , \dotsc ,w_{t,q} )

각 차원은 개별 단어(term)에 해당한다. 어떤 단어가 문서에 포함되어 있다면, 그 문서 벡터에서 해당 단어에 대응하는 값은 0이 아니다. 이 값을 단어 가중치(term weight)라고 부르며, 문서 내에서 단어의 중요도를 나타낸다. 단어 가중치를 계산하는 방법에는 여러 가지가 있으며, 가장 널리 알려진 방식은 TF-IDF 가중치 계산법이다.[2]

벡터 공간 모델에서 '단어(term)'의 의미는 적용 대상에 따라 달라질 수 있다. 일반적으로는 하나의 단어(word), 키워드, 또는 더 긴 구(phrase)를 의미한다. 벡터의 차원 크기, 즉 벡터가 포함하는 요소의 개수는 분석 대상이 되는 전체 문서 집합(말뭉치)에 포함된 고유한 단어의 총 개수와 같다.

단어 가중치를 표현하는 한 가지 방법은 단어-문서 행렬(term-document matrix)이다. 이는 벡터 공간 모델에 의한 검색을 수행할 때 자주 사용되는 메타데이터 형식이다. 예를 들어, 다음과 같은 행렬을 생각할 수 있다.



\mathcal{M} =

\begin{pmatrix}

& d_1 & d_2 & d_3\\

t_1 & 0 & 2 & 1\\

t_2 & 1 & 1 & 2\\

t_3 & 0 & 0 & 3\\

\end{pmatrix}



이 행렬에서 각 행은 단어(t)를, 각 열은 문서(d)를 나타낸다. 행렬의 각 요소 값(''wij'')은 해당 문서(''di'')에 특정 단어(''tj'')가 나타나는 빈도나 중요도를 나타내는 가중치이다. 예를 들어, 위 행렬에서 문서 ''d2''에 단어 ''t1''은 가중치 2를 가지며, 단어 ''t3''은 가중치 0을 갖는다(즉, 나타나지 않음). 단순히 단어의 출현 횟수(''n'')를 가중치로 사용할 수도 있지만(단어 가방 모형), TF-IDF와 같은 더 정교한 알고리즘을 통해 계산된 가중치를 사용하는 경우가 많다.

3. 응용

벡터 공간 모델은 키워드 검색에서 문서의 관련성 순위를 매기는 데 널리 사용된다. 이 모델은 문서 유사도 이론에 기반하며, 각 문서를 벡터로 표현하고 사용자의 질의 역시 동일한 벡터 공간상의 벡터로 나타낸다.

문서와 질의 간의 유사도는 이들 벡터 사이의 각도를 통해 측정할 수 있다. 실제 적용 시에는 계산의 편의성을 위해 각도 자체보다는 각도의 코사인 값을 이용하는 코사인 유사도 방식이 주로 사용된다. 코사인 값이 클수록 두 벡터, 즉 문서와 질의의 방향이 비슷하며 이는 곧 높은 유사도를 의미한다. 반대로 코사인 값이 0이면 두 벡터가 직교함을 나타내며, 이는 질의에 사용된 단어가 해당 문서에 전혀 존재하지 않음을 뜻한다.[2]

3. 1. 유사도 계산

벡터 공간 모델에서의 문서와 질의 벡터 표현


키워드 검색에서 문서의 관련성 순위는 문서 유사도 이론을 바탕으로 계산될 수 있다. 벡터 공간 모델에서는 문서 유사도를 각 문서 벡터와 질의 벡터 사이의 각도 편차를 비교하여 산출한다. 질의는 다른 문서 벡터와 동일한 차원을 가진 벡터로 표현된다.

실제 적용 시에는 벡터 간 각도 자체보다는 각도의 코사인 값을 이용하는 것이 더 간편하다. 문서 dj와 질의 q 사이의 코사인 유사도는 다음과 같이 계산할 수 있다.

:\mathrm{cos}(d_j,q) = \frac{\mathbf{d_j} \cdot \mathbf{q}}{\left\| \mathbf{d_j} \right\| \left \| \mathbf{q} \right\|} = \frac{\sum _{i=1}^N d_{i,j}q_{i}}{\sqrt{\sum _{i=1}^N d_{i,j}^2}\sqrt{\sum _{i=1}^N q_{i}^2}}

여기서 \mathbf{d_j} \cdot \mathbf{q}는 문서 벡터(\mathbf{d_j})와 질의 벡터(\mathbf{q})의 내적(스칼라곱)이다. \left\| \mathbf{d_j} \right\|는 벡터 \mathbf{d_j}의 노름이며, \left\| \mathbf{q} \right\|는 벡터 \mathbf{q}의 노름이다. 벡터의 노름은 다음과 같이 계산된다.

:\left\| \mathbf{q} \right\| = \sqrt{\sum_{i=1}^n q_i^2}

이 모델에서 고려하는 모든 벡터는 각 요소가 음수가 아니므로, 코사인 값이 0이면 질의 벡터와 문서 벡터가 직교하며 일치하는 항목이 없음을 의미한다. 즉, 질의에 사용된 단어가 해당 문서에 존재하지 않는다는 뜻이다. 더 자세한 내용은 코사인 유사도 문서에서 확인할 수 있다.[2]

4. 사례: TF-IDF 가중치

제라드 솔튼, 웡(Wong), 양(Yang)이 제안한 고전적인 벡터 공간 모델에서는 문서 내 특정 용어의 가중치를 지역 매개변수와 전역 매개변수의 곱으로 계산한다.[4][3] 이 모델은 단어 빈도-역 문서 빈도(TF-IDF) 모델로 알려져 있다. TF-IDF는 특정 용어가 한 문서 내에서 얼마나 자주 등장하는지(단어 빈도, TF, Term Frequency)와 그 용어가 전체 문서 집합에서는 얼마나 희귀한지(역 문서 빈도, IDF, Inverse Document Frequency)를 고려하여 가중치를 계산하는 방식이다.

문서 ''d''의 가중치 벡터는 \mathbf{v}_d = [w_{1,d}, w_{2,d}, \ldots, w_{N,d}]^T로 표현되며, 여기서 각 차원은 개별 용어(단어, 키워드, 구절 등)에 해당한다. 벡터의 각 요소인 가중치 w_{t,d}는 문서 ''d'' 내의 특정 용어 ''t''에 대한 TF-IDF 값이며, 다음과 같이 계산된다.

:w_{t,d} = \mathrm{tf}_{t,d} \cdot \log{\frac

}

여기서 각 항목의 의미는 다음과 같다.

  • \mathrm{tf}_{t,d} (Term Frequency, 단어 빈도): 문서 ''d''에서 용어 ''t''가 나타나는 빈도이다. 이는 지역 매개변수에 해당한다.
  • \log{\frac

} (Inverse Document Frequency, 역 문서 빈도): 전체 문서 집합에서 용어 ''t''의 희귀성을 나타내는 전역 매개변수이다.
  • |D|: 전체 문서 집합(코퍼스)에 있는 총 문서의 수.
  • |\{d' \in D \, | \, t \in d'\}|: 전체 문서 중에서 용어 ''t''를 포함하고 있는 문서의 수. 특정 용어가 여러 문서에 자주 등장할수록 이 값은 커지고, IDF 값(로그 안의 분수 값이 작아지므로)은 작아진다. 반대로 희귀한 용어일수록 IDF 값은 커져 가중치에 더 큰 영향을 미친다.


  • 이렇게 계산된 가중치는 bag-of-words 모델과 같은 방식으로 문서를 벡터로 표현하는 데 사용된다. 예를 들어, 문서 d_j와 질의(query) q는 다음과 같은 벡터로 표현될 수 있다.

    :d_j = ( w_{1,j} ,w_{2,j} , \dotsc ,w_{n,j} )

    :q = ( w_{1,q} ,w_{2,q} , \dotsc ,w_{n,q} )

    이 벡터 표현을 사용하여 문서 ''dj''와 질의 ''q'' 사이의 코사인 유사도를 계산하여 유사성을 측정할 수 있다.[2]

    :\mathrm{sim}(d_j,q) = \frac{\mathbf{d_j} \cdot \mathbf{q}}{\left\| \mathbf{d_j} \right\| \left \| \mathbf{q} \right\|} = \frac{\sum _{i=1}^N w_{i,j}w_{i,q}}{\sqrt{\sum _{i=1}^N w_{i,j}^2}\sqrt{\sum _{i=1}^N w_{i,q}^2}}

    또한, TF-IDF 가중치는 단어-문서 행렬을 생성하는 데에도 사용될 수 있다. 이 행렬은 각 행이 용어를, 각 열이 문서를 나타내며, 행렬의 각 요소는 해당 문서에서 해당 용어의 TF-IDF 가중치 값을 가질 수 있다. 단순히 출현 횟수 대신 TF-IDF 가중치를 사용하면 용어의 중요도를 더 잘 반영할 수 있다.

    5. 장점

    벡터 공간 모델은 불린 모델과 비교했을 때 몇 가지 주요한 장점을 가진다.[2]

    우선, 선형 대수를 기반으로 하여 개념적으로 단순하고 직관적이다. 각 문서를 벡터로, 단어들을 차원으로 표현하여 문서 간의 관계를 기하학적으로 이해할 수 있게 돕는다.

    또한, 단어의 중요도를 단순히 포함 여부(0 또는 1)로만 판단하는 불린 모델과 달리, 벡터 공간 모델은 단어 빈도(TF), 역 문서 빈도(IDF) 등을 활용한 비(非)이진 가중치를 사용한다. 이를 통해 문서 내 단어의 중요성을 더 세밀하게 반영할 수 있다.

    이러한 가중치를 바탕으로 문서와 사용자 질의 사이의 유사도를 연속적인 값(예: 코사인 유사도)으로 계산할 수 있다. 따라서 단순히 일치/불일치가 아닌, 관련성의 정도를 파악하여 그 연관도에 따라 문서의 순위를 매기는 것이 가능하다.

    더불어, 질의어와 문서의 단어가 완전히 일치하지 않더라도 부분적인 일치를 고려하여 관련 문서를 찾아낼 수 있다. 이는 불린 모델이 특정 키워드가 없으면 문서를 배제하는 것과 대조되는 유연한 검색 방식이다.[2]

    이러한 장점들은 문서 집합을 표현하는 방식의 차이에서 비롯된다. 불린 모델에서는 문서가 특정 단어의 유무에 따라 고정된 지점(마치 초입방체의 꼭짓점처럼)에 위치하지만, 벡터 공간 모델에서는 단어 가중치에 따라 문서들이 벡터 공간 내에 다양하게 분포한다. 새로운 문서가 추가될 때, 벡터 공간 모델은 단어 가중치를 조정하며 문서 간의 상대적인 거리를 유지하려는 경향이 있다. 이는 검색 공간의 밀도를 적절히 조절하여, 단어가 부분적으로 겹치는 문서들을 효과적으로 찾아내도록 돕는다. 이러한 접근 방식은 검색 결과의 질을 높이려는 초기 연구자들의 목표와도 일치한다.

    6. 한계

    벡터 공간 모델은 다음과 같은 한계점을 지닌다.


    • 길이가 긴 문서는 낮은 유사도 값(스칼라곱이 작고 차원이 커짐)으로 인해 정확하게 표현하기 어렵다.
    • 검색 키워드는 문서 내의 단어와 정확히 일치해야 한다. 부분적으로 일치하는 단어는 관련 없는 문서를 찾아내는 거짓 양성 결과를 가져올 수 있다.
    • 의미적 유사성을 파악하는 데 한계가 있다. 비슷한 내용을 담고 있더라도 사용된 단어가 다르면 문서 간 유사성이 매우 낮게 평가될 수 있으며(거짓 음성), 유사한 맥락을 가진 문서라도 다른 용어를 사용하면 서로 연결되지 않을 수 있다.[2]
    • 단어가 나타나는 순서에 대한 정보는 활용되지 못한다.
    • 단어들이 통계적으로 서로 독립적이라는 이론적 가정에 기반한다.
    • TF-IDF와 같은 가중치 계산 방식이 직관적이기는 하지만, 이론적 근거가 부족하다는 지적이 있다.
    • 질의어를 구성하는 단어들이 독립적이라고 가정하므로, 여러 단어로 이루어진 구문의 의미를 순위 결정에 잘 반영하지 못할 수 있다.


    하지만 이러한 여러 문제점들은 특잇값 분해와 같은 수학적 기법이나 워드넷과 같은 어휘 데이터베이스를 활용하는 등 다양한 방법을 통해 개선될 수 있다.

    7. 극복 방안

    벡터 공간 모델이 가지는 여러 문제점들을 극복하기 위한 다양한 방법들이 있다. 예를 들어, 특이값 분해(Singular Value Decomposition, SVD)와 같은 수학적 기법을 활용하여 문서와 단어 사이의 잠재적인 의미 관계를 분석함으로써 의미적 유사성을 더 잘 반영할 수 있다. 또한, 워드넷(WordNet)과 같은 어휘 데이터베이스를 이용하여 단어 간의 동의어, 반의어, 상하위 관계 등 의미론적 관계 정보를 모델에 통합하는 방법도 있다.[2] 이러한 도구들을 활용하면, 단순히 단어의 표면적인 일치 여부만 보는 것에서 나아가 내용적으로 유사한 문서를 더 효과적으로 찾아낼 수 있다.

    8. 관련 모델

    벡터 공간 모델에 기반하거나 이를 확장한 모델에는 다음과 같은 것들이 있다.

    9. 관련 소프트웨어

    다음 소프트웨어들은 벡터 공간 모델을 연구하거나 구현할 때 참고할 수 있다.


    • Apache Lucene: 자바로 작성된 고성능, 다기능 텍스트 검색 엔진 라이브러리이다.
    • OpenSearch 및 Apache Solr: Apache Lucene을 기반으로 하는 대표적인 검색 엔진 프로그램이다.
    • Gensim: 벡터 공간 모델링을 위한 파이썬+NumPy 프레임워크이다. TF-IDF, 잠재 의미 분석, 랜덤 투영, 잠재 디리클레 할당 등을 위한 점진적(메모리 효율적) 알고리즘을 포함한다.
    • Weka: WordVectors 및 단어 주머니 모델을 자바로 구현한 데이터 마이닝 패키지이다.
    • Word2vec: 단어 임베딩에 벡터 공간을 사용하는 기법이다.
    • SemanticVectors: Apache Lucene으로 생성한 단어-문서 행렬에 랜덤 프로젝션 알고리즘을 적용하여 구현한 의미 벡터 색인이다. 잠재 의미 분석과 유사하다.
    • Compressed vector space in C++: Antonio Gulli가 C++로 구현한 압축 벡터 공간 관련 자료이다.
    • Text to Matrix Generator (TMG): 색인, 검색, 차원 축소, 클러스터링, 분류 등 다양한 텍스트 마이닝 작업에 사용될 수 있는 MATLAB 툴박스이다. 대부분 MATLAB으로 작성되었고 일부는 Perl로 작성되었다. LSI, clustered LSI, NMF 등 다양한 방식을 포함한다.
    • SenseClusters: 잠재 의미 분석 및 단어 동시 발생 행렬을 이용한 텍스트 및 단어 클러스터링을 지원하는 오픈 소스 패키지이다.
    • S-Space Package: 통계적 의미론과 관련된 탐색 및 작업을 위한 알고리즘 모음이다.

    10. 메타데이터 생성법

    벡터 공간 모델에서 문서나 검색어를 벡터로 표현하기 위해서는 각 차원의 값을 정의하는 메타데이터가 필요하다. 메타데이터는 문서의 내용을 수치적으로 표현한 것으로, 이를 생성하는 방법에는 여러 가지가 있다. 대표적인 방법 중 하나로 단어-문서 행렬이 있으며, 이는 각 문서에 특정 단어가 얼마나 나타나는지를 행렬 형태로 표현하는 방식이다.

    10. 1. 단어-문서 행렬 (Term-Document Matrix)

    단어-문서 행렬은 메타데이터의 생성 및 표현 방법 중 하나이며, '''벡터 공간 모델'''에 의한 검색을 수행할 때 매우 빈번하게 사용되는 메타데이터 형식이다. 일반적으로 단어-문서 행렬은 다음과 같은 구조를 가진다.

    단어-문서 행렬:



    \mathcal{M} =

    \begin{pmatrix}

    & d_1 & d_2 & d_3\\

    t_1 & 0 & 2 & 1\\

    t_2 & 1 & 1 & 2\\

    t_3 & 0 & 0 & 3\\

    \end{pmatrix}



    위 행렬에서 각 행은 단어(term, ''t'')를, 각 열은 문서(document, ''d'')를 나타낸다. 행렬의 각 셀 값 ''wi,j''는 ''j''번째 문서(''dj'')에 ''i''번째 단어(''ti'')가 나타나는 빈도 또는 가중치를 의미한다.[2] 예를 들어, 위 행렬에서 문서 ''d3''에 단어 ''t2''는 2번 나타나고, 단어 ''t3''는 3번 나타남을 알 수 있다.

    단순히 단어의 출현 횟수를 사용하는 것 외에도, tf-idf 등의 알고리즘을 통해 계산된 가중치를 사용하는 방법도 자주 사용된다.

    참조

    [1] 논문 Matrices, Vector Spaces, and Information Retrieval 1999-01
    [2] 서적 Information retrieval: implementing and evaluating search engines The MIT Press 2016
    [3] 간행물 A vector space model for automatic indexing http://doi.acm.org/1[...] 1975-11
    [4] 간행물 A vector space model for automatic indexing http://doi.acm.org/1[...] 1975-11



    본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
    모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
    하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
    따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

    문의하기 : help@durumis.com