나뭇잎 교과서

빈도수 벡터와 요약

글에 나온 낱말의 횟수를 센 빈도수 벡터는 글의 내용을 간단히 보여 줍니다. 하지만 어디에나 많이 나오는 낱말은 핵심어가 아닐 수 있습니다. 이 절에서는 빈도로 핵심어와 요약 문장을 찾고, 여러 글을 함께 보며 낱말의 중요도를 TF-IDF로 계산합니다.

먼저 알면 좋은 것
본문

빈도수 벡터와 요약

본문

학교 급식에 관한 글에서 낱말을 세어 보면 '은', '는', '학교' 같은 낱말이 가장 많이 나온다. 그런데 이 낱말들은 어느 글에나 흔히 나오므로 이 글만의 특징이 아니다. 이 글에서는 자주 나오지만 다른 글에는 잘 나오지 않는 '급식', '메뉴' 같은 낱말이 진짜 요점일 것이다. 이 생각을 수로 나타낼 수 있을까?

그림 1. 글 5편 가운데 한 편에서 낱말별 점수. 단순 빈도로는 어느 글에나 나오는 '은/는'이 가장 높지만, TF-IDF로 바꾸면 이 글에만 나오는 '급식'이 가장 높아진다.
먼저 알아야 할 것비율과 백분율(중학교), 로그(대수), 문장의 벡터 표현(집합과 벡터로 나타낸 텍스트).

2.2.1빈도수 벡터

앞에서는 낱말이 있으면 1, 없으면 0을 적었다. 이번에는 낱말이 나온 횟수를 적는다. 사전의 각 낱말 자리에 그 글에서 나온 횟수를 적은 벡터를 빈도수 벡터라 한다. 같은 낱말이 여러 번 나오는 긴 글의 특징을 더 잘 담는다. 빈도가 높은 낱말 몇 개를 뽑으면 글의 대강을 짐작할 수 있다.

그러나 '은', '는', '이다'처럼 문법적인 낱말이나 '학교'처럼 주제와 상관없이 흔한 낱말은 어느 글에서나 빈도가 높다. 그래서 단순 빈도로 요점을 뽑으면 이런 낱말이 맨 위에 온다.

2.2.2TF-IDF

요점이 되는 낱말은 이 글에서는 자주 나오고(빈도가 높고), 다른 글에서는 드물게 나와야 한다. 앞의 것을 낱말 빈도(TF), 뒤의 것을 역문서 빈도(IDF)로 나타내 둘을 곱한다.

정의 2.2.1 TF-IDF

전체 문서 \(N\)편 가운데 낱말 \(w\)가 들어 있는 문서가 \(n_w\)편일 때 \[\text{TF-IDF}(w) = \text{TF}(w) \times \log\frac{N}{n_w}\] 이다. 모든 문서에 나오는 낱말은 \(\log 1 = 0\)이 되어 점수가 0이다.

그림 1에서 점수 방식을 바꾸어 보자. '은/는'은 9번이나 나왔지만 5편 모두에 나오므로 \(\log\frac{5}{5} = 0\)이 곱해져 점수가 0이 된다. '급식'은 5번 나왔고 이 글에만 있으므로 \(5 \times \log 5 \approx 3.49\)로 가장 높다. 로그를 쓰는 것은 문서가 아주 많을 때 희귀한 낱말의 가중치가 지나치게 커지지 않게 하려는 것이다.1

TF이 글에서 자주 × IDF다른 글에서 드물게 = 요점 점수
그림 2. 이 글에서 자주 나오고 다른 글에서는 드문 낱말일수록 TF-IDF 점수가 높다.

2.2.3예제 풀이

예제 2.2.2

글 5편이 있다. 어떤 글에서 '학교'가 6번, '맛있다'가 4번 나왔고, '학교'는 5편 가운데 4편에, '맛있다'는 2편에 나온다. 두 낱말의 TF-IDF를 구하여 어느 쪽이 이 글의 특징에 가까운지 판단하여라. (\(\log 1.25 \approx 0.097\), \(\log 2.5 \approx 0.398\))

'학교'는 \(6 \times \log\dfrac{5}{4} = 6 \times 0.097 \approx 0.58\)이다. '맛있다'는 \(4 \times \log\dfrac{5}{2} = 4 \times 0.398 \approx 1.59\)이다.

빈도는 '학교'가 더 높지만 TF-IDF는 '맛있다'가 약 2.7배 높다. '학교'는 대부분의 글에 나오는 흔한 낱말이라 이 글을 다른 글과 구별해 주지 못하기 때문이다. 이렇게 고른 낱말들이 검색 엔진의 색인이나 글의 자동 요약에 쓰인다.

아래 탐구 카드에서 낱말을 세어 글의 요점을 찾고, 가장 많이 나온 낱말이 요점인지 TF-IDF로 따져 보자.

  1. 로그의 밑은 10이나 \(e\)를 쓰는데, 밑을 바꾸어도 모든 낱말의 점수가 같은 비율로 바뀌므로 순위는 달라지지 않는다.
마무리

빈도수 벡터는 낱말이 나온 횟수를 담지만, 어느 글에나 흔한 낱말이 위로 온다. TF-IDF는 낱말 빈도에 \(\log\frac{N}{n_w}\)를 곱해, 이 글에서 자주 나오고 다른 글에서 드문 낱말에 높은 점수를 준다. 그래서 처음 질문의 답은 '아니다'이며, 가장 많이 나온 낱말보다 TF-IDF가 높은 낱말이 그 글의 요점에 더 가깝다.

탐구 1

낱말을 세기만 해도 글의 요점을 찾을 수 있을까?

빈도수 벡터와 요약 · 조작

글은 수업용으로 지은 가상의 학교 소식이다. 낱말 나누기는 띄어쓰기와 흔한 조사 떼기만 쓴 단순한 방법이다.

  1. 질문긴 글을 다 읽지 않고도 무엇에 관한 글인지 알 수 있을까? 컴퓨터는 뜻을 모르는데 어떻게 요약할 수 있을까?
  2. 복원문장은 낱말마다 나온 횟수를 적은 벡터(낱말 주머니)로 나타낼 수 있다.
  3. 설명글 전체의 낱말 횟수를 센 빈도수 벡터에서 값이 큰 성분은 글의 주제와 관련된 핵심어일 가능성이 높다. 다만 ‘그리고’, ‘것’처럼 어떤 글에나 많이 나오는 불용어는 먼저 뺀다. 그리고 문장마다 핵심어 빈도를 더한 점수를 매겨 점수가 가장 높은 문장을 고르면, 글을 대표하는 요약 문장을 뽑을 수 있다(추출 요약).
  4. 연결검색 엔진의 핵심어 추출, 뉴스의 자동 요약, 낱말 구름(워드 클라우드)이 모두 빈도에서 시작한다. 다음 카드에서는 여러 글을 비교해 낱말의 중요도를 다르게 매긴다.
  5. 적용불용어를 빼기 전과 후의 막대그래프를 비교해 보자. 그리고 요약 문장으로 뽑힌 문장이 글 전체를 잘 대표하는지 판단해 보자.
  6. 판단많이 나온 낱말이 꼭 중요한 것은 아니다. 또 빈도만 쓰는 요약은 문장의 순서나 논리를 고려하지 않아서, 뽑힌 문장만 읽으면 오해할 수 있다.

확인조건이 달라지면

불용어를 뺀 핵심어 빈도가 {축제: 5, 공연: 3, 동아리: 2}일 때, "축제 공연이 동아리 공연과 함께 열린다"의 문장 점수(핵심어 빈도의 합)는? (낱말: 축제, 공연, 동아리, 공연, 함께, 열린다)

탐구 2

가장 많이 나온 낱말이 그 글의 핵심어일까?

TF-IDF · 예측→확인

학교 신문의 가상 기사 네 편을 낱말로 나눈 것이다. 기사 1의 핵심어로 가장 알맞은 낱말은 무엇일까?

  1. 질문학교 신문 기사에는 ‘학교’, ‘학생’이 어디에나 많이 나온다. 이런 낱말이 많이 나왔다고 그 기사의 핵심어라고 할 수 있을까?
  2. 복원글은 낱말마다 나온 횟수의 목록으로 나타낼 수 있다. 그리고 비율 \(\frac{N}{DF}\)는 분모가 작을수록 크다.
  3. 설명TF(낱말 빈도)는 그 문서 안에서 낱말이 나온 횟수이고, DF(문서 빈도)는 전체 \(N\)개 문서 중 그 낱말이 나온 문서의 수이며, IDF는 \(\dfrac{N}{DF}\)처럼 드물게 나오는 낱말일수록 커지는 값이다. 둘을 곱한 \(\text{TF-IDF} = TF \times IDF\)는 이 문서에는 많이 나오지만 다른 문서에는 드문 낱말에서 크다. 대수에서 로그를 배운 학생은 \(IDF = \log\dfrac{N}{DF}\)로 써서 값이 너무 커지지 않게 할 수 있고, 이때 모든 문서에 나오는 낱말은 IDF가 0이 된다.
  4. 연결검색 엔진은 검색어의 TF-IDF가 큰 문서를 먼저 보여 주는 방식으로 시작했다. 다음 절에서는 TF-IDF 벡터 사이의 각으로 문서의 비슷함을 잰다.
  5. 적용먼저 예측한 뒤 확인해 보자. 그리고 기사마다 TF-IDF가 가장 큰 낱말을 찾아 기사의 제목을 붙여 보자.
  6. 판단TF-IDF는 문서 묶음에 따라 달라진다. 같은 기사라도 학교 신문 묶음 안에서는 ‘학교’가 덜 중요하지만, 여러 신문의 기사를 섞으면 ‘학교’가 중요한 낱말이 될 수 있다.

확인조건이 달라지면

문서 10개 중 1개에만 나오는 낱말이 그 문서에 3번 나왔다. \(IDF = \frac{N}{DF}\)로 계산하면 TF-IDF는?

AI 출제 문항연습문제 풀어보기14문항
Esc

↑↓ 고르기Enter 열기