토큰화 : 주어진 말뭉치(Corpus)를 토큰(token)이란 단위로 나누는 작업(토큰 -> 보통 의미가 있는 단위로 정의 (ex.단어, 구, 형태소...))
NLP에서 일반적으로 사용하는 전처리 과정(RNN, LSTM같은 신경망 모델에서 많이 사용)
Text -> Corpus -(전처리 과정)> Features -> 모델
토큰화 예시
단어 토큰화 : "This is a example" -> "This","is","a","example"
글자 토큰화 : "Tokenization" -> "T","o","k","n","i","z","a","t","o","n"
왜 토큰화를 쓰는가?
품사를 수월하게 매핑가능
('코딩','Noun'),('하느라','Verb'),('고생','Noun')
원하지 않은 토큰 제거
조사, 욕설, 비속어 단어 제거
단어 사전(토큰의 리스트) 생성 가능
Corpus에서 나오는 data를 중복을 제거하고 나온 토큰으로 단어 사전을 만든다.
단어 토큰화
사건 A가 일어났을 때 사건 B가 일어날 조건부 확률
P(B|A) = P(A∩B)/P(A)
P(A,B) = P(A)P(B|A) = P(A∩B)
사건 (A,B)가 2개
P(A,B) = P(A)P(B|A) = P(A∩B)
사건 (A,B,C)가 3개
P(A,B,C) = P(A)P(B|A)P(C|A,B) = P(A∩B∩C)
사건 (E1, E2,...,En)이 n개
P(E1,E2,...,En) = P(E1)P(E2|E1)...P(En|E1...En-1)
이를 조건부 확률의 연쇄법칙이라 한다.
말뭉치 안에 각 부분이 나온 횟수를 count
count(나는 배가 고파서 밥을) = 25번
count(나는 배가 고파서) = 100번
P(밥을|나는 배가 고파서) = 25%
ex) "The black cat eats a muffin"
unigram(N=1)
The/black/cat/eats/a/muffin
Biagram(N=2)
The black/black cat/cat eats/eats a/a muffin
Trigram(N=3)
The black cat/black cat eats/cat eats a/eats a muffin
4-gram(N=4)
The black cat eats/black cat eats a/cat eats a muffin
n-gram에서 특정 단어를 예측하는데 살펴볼 앞 단어의 개수는 n-1개이다.
TF : 특정 단어가 문서에서 등장하는 빈도
IDF : 역 문서 빈도 - 불용어 처럼 문서와 연관성이 없음에도 자주 나오는 단어 들에게 패널티를 주기 위해 이용
TF-IDF의 특징
해당 문서의 단어의 출현 횟수 & 전체 문서의 단어 출현 횟수 동시 고려해 중요도 산출, 주로 문서의 유사도, 검색 결과의 중요도, 문서 내의 특정 단어의 중요도 측정에 사용된다.
IDF = log10(N/nt)
(N: 전체 문서의 개수, nt:용어 t가 등장하는 문서의 총개수)
각 문서에서 단어에 대한 TF를 IDF에 곱하여 TF-IDF완성(a 같은 불용어들은 모든 문서에 등장하기 때문에 IDF 값은 0또는 매우 작은 값이되어 TF-IDF 값에서 패널티를 받는다.)
TF와 IDF를 결합하여 각 용어의 가중치 계산
적은 수의 문서(IDF값이 크다.)에 용어 t가 많이 나타날 때(TF가 크다) 가장 높은 값을 가진다.
모든 문서에 그 용어가 나타날때 가장 낮은 값을 가진다.