Bag of Words
텍스트 데이터셋의 어려움?
어떻게 가변적 길이의 문서를 고정 길이의 숫자 벡터로 변환할 것인가
단어 빈도 기반, 카운트 기반으로 설명할 것
수집된 원문 데이터 전처리?
stemming, 소문자처리, Stop Words 등을 통해 전처리를 수행
한 번 처리된 데이터를 활용할 것
하고자 할 것?
첫 번째 문서가 주어져 있을 때 이 문서에 해당하는 변수 1부터 P까지 해당하는 길이에다 숫자 채움
어떻게 무슨 숫자들로 채울 것인가
두 번째 문서가 들어왔을 때도 마찬가지로 숫자를 두 번째 행에다 채움
세 번째도 마찬가지
같은 차원의 연속형 수치형 벡터로 변환이 목적
같은 차원의 벡터로 변환?
이를 document representation이라고 표현
Document Representation?
하나의 문서를 구조화된 방식으로 표현할 것인가
어떻게 하면 비구조적인 텍스트를 구조화된 벡터 또는 매트릭스 형태로 바꿀까
뒤에 여러 가지 기법들을 적용하기 위해서(고정 길이의 벡터들에 적용 가능해)
vector space 모델이라고도 해
vector space 모델?
특정 공간의 벡터로 정의한 다음 해당 벡터를 처리하는 머신러닝 알고리즘
Bag of Words?
가장 고전적으로 쓰임
텍스트 표현에 있어 단순한 아이디어에서 시작
가정은 문서는 그냥 단어들의 집합체이고 순서를 무시함
단어가 다르다면 그 다른 단어를 atomic symbols로 표현
discrete space에 표현
한 번이라도 등장한 단어들을 전부 나열시키기고 각각의 문서에서 해당하는 단어가 나온 수만큼 표기
Term-Document Matrix(TDM, DTM)?
T가 행, D가 열
Term이 행을 Document가 열을 차지함
객체들이 행이고 변수들이 열인 경우는 DTM이 자연스러워
TDM, DTM 예?
John likes to watch movies, Mary likes too.
John also likes to watch football game.
Binary representation : 해당 하는 단어가 몇 번 등장했는지 상관없이 등장했느냐 안했느냐 binary 변수 사용
Frequency representation : 해당하는 단어가 몇 번 등장했는지 빈도 이용
Binary representation은 Likes를 1로
Frequency representation은 Likes를 2로
특정 작업에 따라 다르게 씀
Bag of Wards 가정?
내용 자체는 단어의 빈도로써 추론할 수 있음
단어의 순서를 고려하지 않는 단점이 있음 단어를 독립적인 feature로 봐
John is quicker than Mary이 Mary is quicker than John 같은 BOW 표현이 됨
오지지널 텍스트를 가지고 term-document matrix는 가능한데 그 반대는 불가
원복이 안됨
Original text : John loves Mary
BOW : (..., John, .., loves, ..., Mary, ...)
Reconstruction : John loves Mary? Mary loves John?
BOW 단점 정리?
의미가 다른 두 문장 또는 문서가 동일한 표현이 될 수 있음
한 번 BOW 표현되면 복원이 불가능함
Stop words?
단어이긴 한데 정보를 갖지 않는 문법적인 역할만을 수행하는 단어
관사, 전치사, 접속사 등
한국어는 일반적인 종결 어미
stop Words 제거하면 사람이 읽었을 때는 이상하지만 BOW의 입장에서는 굉장히 중요해
Stop Words 제외 방식?
해당하는 리스트가 있어서 매칭하는 방식으로 제외
SMART stop words list는 총 571개 사전 정의
MySQL은 543개의 stop words
가끔가다가 중요한 단어가 stop words 리스트에 포함될 수 있어
한국어도 있어
Word Weighting
Word Weighting: Term-Frequency(TF)?
단어의 빈도
$tf_{t,d}$ 아래 첨자에서 t는 term을 d는 document를 뜻함
해당하는 특정 문서에 해당 term이 몇 번 등장했는가
같은 단어가 어떤 문서 집합에는 굉장히 중요할 수 있지만 아닐 수도 있음
개별 문서에 대해서 특정 term이
Word Weighting: Document Frequency(DF)?
$df_{t}$
t라는 term이(기준은 한 문서가 아닌 전체 코퍼스) 코퍼스 내에서 몇 개의 문서에 등장했는지
| t1 | t2 | t3 | |
| D1 | 1 | 1 | 0 |
| D2 | 0 | 1 | 0 |
| D3 | 2 | 1 | 2 |
$tf_{1,1}$ = 1
$df_{1}$ = 2 (D1과 D3)
빈번하지 않게 등장하는 단어가 일반적으로 등장하는 단어보다 특정 문서에 중요도가 높음
is, can, the, of 등은 DF 값이 매우 높을 것 그러나 그렇게 중요하지 않음
코퍼스에서 얼마나 널리 등장하는 값에 역수를 취해 해당하는 term의 중요도 산출
common term보다는 rare term
Word Weighting: Inverse Document Frequency(IDF)?
$idf_{t}$
기하급수적으로 늘어나기 때문에 log 처리(상용, 자연 무방)
$idf_{t} = log_{10} (N/df_{t})$ N은 코퍼스에서 문서의 개수 $df_{t}$는 해당하는 term의 document frequency
IDF 예시?
N = 1 million
| term | df_t | idf_t |
| calpurnia | 1 | 6 |
| the | 1,000,000 | 0 |
Word Weighting: TF-IDF?
특정한 term이 특정한 document에 얼마나 중요한지 word weighting 관점에서
TF는 커야되고 IDF는 낮아야 함
$TF - IDF(w) = tf(w) \times log(\frac{N}{df(w)})$ TF와 IDF 곱한 값이 커야 함
해당 term이 특정 document에 얼마나 중요하냐 정량적 대답
하나의 타겟 문서에서 등장 빈도가 높을 수록 TF 커지고
전체 코퍼스에서 덜 등장하느냐에 따라서 희소성이 높을 수록 단어의 중요도 커져
특정한 문서에 집중적으로 등장하고 나머지 문서에 등장하지 않을 경우 중요한 것
|V|-dimensional vector space?
V = vocabulary
해당 문서가 쓰인 언어에서의 총 단어 수
한국어는 100만 개
하나의 문서를 표현하기 위해서 |V|-dimensional vector space가 필요
각각의 Terms 공간에서 axes가 되고
Documents은 space에서 점이 됨
매우 고차원적임
희소함(Sparseness) 거의 모든 셀 값이 0
TF-IDF 예시?
Q1 : Which term is the most important for the document1?
Q2 : Which term is the least important for the document1?
| Doc1 | Doc2 | Doc3 | |
| Term1 | 5 | 0 | 0 |
| Term2 | 1 | 0 | 0 |
| Term3 | 5 | 5 | 5 |
| Term4 | 3 | 3 | 3 |
| Term5 | 3 | 0 | 1 |
5가지 term의 빈도 나타냄
| Doc1 | TF | DF | IDF | TF-IDF |
| Term1 | 5 | 1 | Log3 | 5log3 |
| Term2 | 1 | 1 | Log3 | 1log3 |
| Term3 | 5 | 3 | Log1 | 0 |
| Term4 | 3 | 3 | Log1 | 0 |
| Term5 | 3 | 2 | Log(3/2) | 3long(3/2) |
TF는 제일 위 표의 1열 그대로
DF는 Term 기준으로 Term1은 한 개의 D에 나타나서 1
Term3은 세 개의 D에 나타나서 3
$log(\frac{N}{df})$ N은 3이라 term 1은 log(3/1) = log3
Word weighting : Term 1 > Term 5 > Term 2 > Term 3 = Term 4
TF Variants?
한 논문에만 6가지 넘고
d나 K 값에 따라서도 다름
DF & IDF Variants?
DF가 0일 경우 문제가 발생하는 경우 있어
smoothing 추가
TF, DF, IDF 변종 경우의 수?
많지만 많이 쓰이는 것은
TF : $1 + log(tf_{t,d})$
DF : $log(\frac{N}{df_{t}})$
Normalization은 cosine
TF-IDF Variants의 영향?
경우의 수 조합해서 한 연구 있어
TF는 6
IDF는 9
Normalization은 2
성능이 좋은 조합 있기도 하고 없기도 함
방법론 뿐만이 아니라 Document representation하느냐에 따라서 성능차이 있을 수 있음
N-Grams
N-Grams-based Language Models in NLP?
NLP의 Language Models
이전의 N-1 번째까지의 단어를 보고 다음 단어 예측
(markov 가정)
N-Gram in Text Mining?
복합어에서 유용한 의미를 가질 수 있어
Six sigma, big data 같은 단어
Bigram 예?
| i | want | to | eat | chinese | food | lunch | spend | |
| i | 5 | 827 | 0 | 9 | 0 | 0 | 0 | 2 |
행이 먼저 나온 단어 열이 다음에 나올 단어
i want, to eat, to spend 등
N-Grams 예?
구글 북스 Ngram Viewer
https://books.google.com/ngrams
Google Ngram Viewer
Part-of-speech tags: cook_VERB, _DET_ President Wildcards: King of *, best *_NOUN Inflections: shook_INF drive_VERB_INF Arithmetic compositions: (color /(color + colour)) Corpus selection: I want:eng_2012 Complete list of options
books.google.com
N-Grams이용해서 연구한 결과?
2만 건의 기사가 있는 기사, 천 개의 각 카테고리
분류 문제
20 newsgroup dataset 결과는 생각보다 Error rate가 낮아지지 않음
정확도가 올라가도 Gram을 늘린 만큼의 수고만큼 올라가지 않음
댓글