Fascination
article thumbnail

Ch10. Representing and Mining Text

- 숙명여자대학교 소프트웨어학부 데이터사이언스개론 - 박동철 교수님


# Dealing with Text

- 우리 입맛대로 feature vector에 맞게 data가 주어지지 않음

- tool에 맞게 데이터를 가공하거나 (representation engineering = preprocessing)

데이터에 맞는 tool을 새로 설계함 // 전자의 방법이 효율적이기 때문에 일반적으로 사용

- text data: 여러 분야에서 text data를 다루고 mining하며 분석하기 때문에 큰 부분을 차지

 

 

# Why Text is Important

- text는 어디에나 있음

> 많은 기존의 적용에서 text를 만들어내거나 기록함 ex) 진료 기록

> 멀티미디어 데이터가 많은 양의 데이터를 차지하지만 text를 포함하고 있기 때문임

→ text를 통해 많은 양의 data를 포함하는 것

- 비지니스 환경에서도 많이 쓰임

> 고객의 피드백을 받아야 할 때 등

> 고객과 소통을 위해서는 여전히 text가 중요함

 

 

# Why Text is Difficult

- text: 사람들이 심리적으로 쉽다라고 느낌

> 눈에 보이고 직관적으로 이해가 쉽기 때문 하지만 사실 단순하지 않음

> 전반적으로는 unstructured함 하지만 모두 그런것은 X ex) 날짜, 요일 등..

> 주어, 목적어, 서술어 등 구조가 있는 것 같지만 이것은 언어학적인 측면에서의 구조임

인간이 이해하기 위한 구조지 컴퓨터를 위한 것 X

> 문서가 주어질 때 단어를 분리하여 feature vector를 만드는 과정에서 단어의 순서가

중요할 수도 있고 아닐 수도 있음 → 따라서 rule이 필요함

- text가 데이터로서 가치를 가지려면 rule이 필요함

> text의 문법이 다 맞는 것은 X ex) 문장을 랜덤하게 마침

> 유의어, 동음이의어, 축약어 등..

특히 축약어는 컴퓨터가 rule을 찾아내지 못할 수 있어 의미상실 가능성있음

> text는 문맥에 따라서도 의미가 달라짐 ex) 잘한다 잘해 ~ → 진짜 잘하는건지 아님 비꼬는건지?

- text는 preprocess 과정이 필요

 

 

# Text Representation

- 목표: 문서의 set을 feature vector로 바꾸어야 함

> 하나의 문서가 하나의 instance가 되는 것

> feature vector가 무엇이 될지는 미리 알 수 없음 → 우리가 뽑아서 만들어내야 함

- 용어

> 문서 즉, document는 token(word) 혹은 용어(term)으로 구성됨

> corpus: document의 모음(collection)

 

 


# Bag of Words

- document가 word의 집합이다 라고 바라보는 것

> 문법, 단어의 순서, 문장의 구조, 구두점 모두 무시

> 모든 단어를 중요한 keyword라고 생각하며 단어 자체가 feature vector가 됨

> 단어가 해당 document에 있으면 1 없으면 0

- 직관적으로 표현됨

- 복잡도가 높지 않음 → inexpensive

- 많은 task들에서 잘 작동함

 

 

# Term Frequency (TF)

- word counting

> 단어들이 document에 몇 번 나타났는지 count

- Pre-processing

1. 대문자를 소문자로 바꿈

> iPhone, iphone, IPHONE → 모두 iphone으로 바꿈 (같은 단어로 인식)

2. 단어의 원형을 제외하고 모두 제거 (stemmed)

> 접미사 제거

> 동사원형으로 바꾼다고 생각 ex) 복수형의 -s/-es 제거, 시제 표현 제거

> 기계적으로 자르기 때문에 원형의 스펠링이 정확하지 않을 수 있음

모든 document에서 동일한 과정으로 처리되면 스펠링 정확하지 않아도 괜찮음

3. stop word를 제거

> 전치사, 관사 제거

a, the, of, on, and 등등

> 너무 자주 등장하고, 큰 뜻을 가지지 않기 때문임

 

- example: more complex sample document

> 선처리로 단어를 형태를 바꾼 후 count → sorting

 


# Normalized Term Frequency

- 단어가 자주 나타난다 해서 중요하다고 할 수 있는가?

> document가 길어서 frequency가 높은 것을 가지고는 무조건 중요하다고 할 수 X

- normalized 방법

> word frequency를 전체 document의 길이로 나눠줌

→ document의 길이에 따라 생길 수 있는 위의 문제를 해결해줌

> corpus에서 특정 용어의 빈도수로 나눌 수도 있음

> 용어의 count만 따지면 안되고 normalized 과정을 중요시 해야 함

 

 

# Inverse Document Frequency (IDF)

- document의 frequency에 초점

> 전체 corpus에서 단어가 얼마만큼 자주 나타나는가

> 전에 document에서 그 단어를 포함하고 있는 document는 얼마나 많이 있는가

> 위와 같은 관점을 가지고 mining을 함

- 단어가 너무 자주 나타나거나 너무 나타나지 않으면 분류나 군집화에서 의미가 없음

- TF에 대해서 낮고 높음의 한계를 지정

- 더 적은 document에서 용어가 발생할 수록 더 meaningful한 단어이기 때문에 inverse가 붙음

> 일반적인 상식의 반대 전체/특정 값 으로 구성되어있음

> IDF가 1에 수렴

> Number of documents containing term t가 작을수록 IDF가 큼

 

 

# Combining TF and IDF : TF-IDF

- TF-IDF(t, d)의 값은 single document에 대해 정해지지만 IDF는 전체 corpus에 대해 정해짐

- 각 document는 feature vector가 됨

- corpus는 feature vector의 집합임

- feature selection

> 단어의 개수에 대해 최소/최대 임계선 잡기

>중요도에 따라 rank에 대한 information gain 매기기

 


# Example: Jazz Musicians

wikipedia에서 재즈 음악가 15명의 일대기를 검색

> 적은 document에서도 각각의 단어로 세면 feature가 2000개가 넘음

 

1. stemming

> 동사원형으로 변형

> "Kansas" 또는 "famous"는 복수형이 아닌데도 복수형으로 인식되서 s가 빠짐

원형대로 잘라내지 않더라도 괜찮음 모든 document에서만 적용되면 됨

 

2. stopword 제거

- 단어의 빈도수 또는 document의 길이를 사용해 normalized 과정 필요

 

3. TF-IDF로 나타내기

- 단일 document의 feature vector가 되는 것

> play, jazz같은 단어는 15개의 document에서 자주 등장함을 알 수 있음

 

- "Famous jazz saxophonist born in Kansas who played bebop and latin"을 검색했을 때 검색 엔진은 어떻게 동작할까?

> TF-IDF로 만든 feature vector랑 document를 가지고 cosine 유사도를 구함

> Charlie Parker의 일대기가 가장 유사한 document임

 


# Beyond "Bag of Words"

- Bag of Words (TF-IDF)

> data scientist들이 text를 가지고 mining할 때 가장 먼저 고려

> 하지만 더 복잡한 것을 요구하는 application이 존재

① N-gram Sequence: 순서 중요

② Named Entity Extraction: 개체명 추출

③ Topic Models: topic 단위로 추출

 

 

# N-gram Sequences

- 단어의 순서가 중요

- 단어 그 자체 뿐 아니라 n개씩 짝지은 token도 따짐

- 줄여서 n-grams라고 많이 함 (2개씩 짝지으면 bi-grams라고 부름)

- "Bag of n-grams up to three

> individual words, adjacent word pairs, adjacent word triple 이렇게 세가지 정보를 보여줌

- 장점

> 만들기 쉬움: 언어학적인 지식 필요없고 복잡한 parsing 알고리즘 필요 없음

- 단점

> 복잡도 증가: feature set의 크기가 증가함

 

 

# Named Entity Extraction

- Entity: 여기서의 의미는 term or word. 즉, 의미를 가지는 객체

ex) 이름, 지명, 제목 등..

- 우리는 구문 추출에 있어서 더 정교하고 싶음

> 단어의 구성이 하나의 unique한 개체로 작용함. 즉, id 값을 갖는 것

- Named entity extraction 방법은 사전에 미리 지식이 필요함

> large corpus를 통해 미리 trained하거나 manually하게 분석하기 위해 사람이 정보를 입력해야 함

기계적으로 분석하기에는 한계가 존재함

 


# Topic Models

- 앞에서는 단어 자체를 가지고 분류 → 이것만으로는 뭔가 부족

- 많은 document에서 각각 topic을 따로 뽑아냄

> document: 단어들의 squence로 구성됨

> word: 하나 혹은 그 이상의 topic과 연결됨

> topic은 모델링을 해 학습시켜 만들어짐

> topic: word들의 classification or clustering

 


# Example : Mining News Stroies to Predict Stock Price Movement

- 뉴스를 보고 해당되는 회사들의 주식값이 어떻게 변할지 예측

> 변동을 예측

> 어려움

- 간단한 가정

1. 같은 날. 즉, 가까운 미래를 예측

2. 숫자값을 정확하게 예측하는 것은 힘듬

> classification해서 변할지 안변할지만 고려

3. 작은 값보다는 큰 값에 중점을 두고 예측

4. 뉴스를 보고 숫자값의 변동을 예측하는 것은 어려움

> specific하게 뽑아내기

 

 

stock price가 급등하거나 급하할 때 합쳐서 change라는 class로 분류

 

- ~+-2.5는 no change

 

- +-2.5 ~ +-5까지는 분류하지 않음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 1999년대 뉴욕 주식 변화와 나스닥에 대한 historical data

> 개장부터 폐장까지의 주요 주식들의 가격에 대한 데이터: 주식 가격의 변동 폭을 예측 가능

> 일년 동안의 재정과 관련된 뉴스들과 주식의 관련성에 대한 data

- A sample new story

- 일년 동안의 Summit Technology를 사용한 회사의 주식 변동

> 1번 뉴스가 나온 이후로 급증

- 뉴스 요약본

- data processing

> 36000개의 data processing: 대문자를 소문자로 바꿈, stemmed, remove stop word, n-grams...

> targging된 stories 중 75%는 변하지 않고 25%는 변함

 

 

ROC curve

> 10-fold cross validation의 평균 결과

 

여기서는 NB, LR이 tree보다 성능이 좋음

 

 

 

 

 

 

 

 

 

 

Lift Curve

> 얼마만큼 정확도가 높은지 보여줌

 

20%만 targeting 하게되면 NB, LR model이 random model보다 2배 높은 정확도를 보여줌

 

 

 

 

 

 

 

 

- information gain 부여하기

> 36000개의 뉴스기사 단어들 중 stock price에 큰 영향을 미치는 단어를 뽑아봄

 

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!