일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 분할정복
- 그리디
- 재귀
- 깊이우선탐색
- 유사도
- pandas
- 구현
- 백준
- 유클리드
- 공공데이터
- 누적합
- 그래프이론
- Geocoding
- GroupBy
- 비트마스킹
- geopy
- dp
- 코사인유사도
- 자연어처리
- cosine
- 건축물대장정보
- 너비우선탐색
- TF-IDF
- 그래프탐색
- NLP
- 우선순위큐
- 지진대피소
- 수학
- xmltodict
- 전처리
- Today
- Total
정리용
[NLP] TF-IDF 본문
1. 용어 정의
TF = Term Frequency, 특정 단어의 빈도를 타나냄
Doc[0] 에서 go 의 TF는 1 , home 의 TF 는 2 이다.
DF = Document Frequency, 특정 단어가 나타나는 문장 수
home은 총 4번 등장했지만 문장수는 3개 이므로 home 의 DF 는 3 이다
IDF = ln { (1+n) / (1+df) } + 1 , DF의 역수변환
( n = 3 , 총 문장의 수 )
큰 DF 값을 가지는 단어에 패널티를 주는 것이 목적이다.
2. TF-IDF 의 특징
TF-IDF은 빈도 기반 단어 임베딩 방법 중 하나이며 특징 추출 기법으로 데이터의 특징들만을 추출하여 딥러닝 학습 효율을 높히는 것이다.
특정 단어의 빈도를 기반으로한 특징 추출의 경우 " 저, 그, 이, this, i .." 처럼 조사 관사에 높은 점수를 주기때문에 유의미한 결과를 기대하기 힘든데 이러한 단점을 보안하고자 TF-IDF 를 사용한다.
TF - IDF 의 점수는 TF x IDF 의 연산으로 이루어지는데 TF가 가산점이라면 IDF는 패널티인 셈이다.
위 사진에서 home의 경우 ( n = 3 )
DF = 3
IDF = ln ( 1+3 / 1+3 ) + 1 = ln 1 + 1 = 1
3. 백터화 과정
3-1 단어사전
model fit을 이용해 모든 문서에 대한 단어 사전(Vocabulary_ , 왼쪽 사진)을 생성한다.
이 때 n-gram 을 사용할 수 있는데 단어를 묶어서 단어사전을 만다는 것이다
예를 들어 n-gram의 range를 ( 1, 3 )으로 설정하면
back / back to / back to home / go / go back / go back to ... 와 같이 단어 사전이 생성된다.
3-2 TF 벡터화
각 문장 ( Doc[n] ) 마다 생성한 단어 사전을 컬럼 ( key 값) 으로하는 벡터를 생성한다.
3-3 DF 벡터화
DF 벡터화 과정도 TF와 비슷하다.
단 모든 문장 (doc[0] doc[1] doc[2] ... ) 을 종합하여 계산한다.
모든 문장에서 " back " 는 1개의 문장에서 나왔고 " go " 는 3개의 문장에서 나왔음을 의미한다.
주의할 점은 단어를 count하는 것이 아닌 출현 문장을 count 하는 것이다.
첫 번쨰 문장에서 go가 3번 나오고 나머지 문장에서 나오지 않았다면 1 의 값을 갖는다.
3-3 IDF 연산

IDF = ln{ (1+n) / (1+df) } + 1 공식을 적용한다면
IDF = ln ( 4 / 2 ) +1 = 0.69314 + 1 = 1.69314
3-4 TF-IDF 백터화
TF 벡터와 IDF 백터를 곱한 후
극단치를 가지는 값들을 완만하게 만들기 위해 L2 정규화를 적용하여 최종 TF-IDF를 구한다.
4. 유사도 측정
문서의 유사도는 단어간의 거리보단 각도에 초점을 두는 코사인 유사도 측정하며 벡태의 내적을 활용한다.
3개의 문장에 대해 유사도를 측정해보면 다음과 같다.

첫번째 문장과 두번째 문장의 유사도가 가장 높게 나왔다.
'딥러닝 > 이론' 카테고리의 다른 글
[NLP] word2vec ( CBOW , Skip-gram) (0) | 2022.01.27 |
---|---|
[NLP] LSA (잠재 의미 분석 ), SVD ( 특이값 분해 ) (0) | 2022.01.26 |
[NLP] 문서의 유사도 측정 방법 ( 유클리드 거리 / 코사인 유사도 ) (0) | 2022.01.25 |
[NLP] BOW ( Bag of Word ) (0) | 2022.01.21 |
[NLP] 자연어 처리의 고전적인 방법 0 (개요) (0) | 2022.01.18 |