Processing math: 66%
본문 바로가기
대학원 수업 요약 정리

비정형데이터분석(강필성교수님)(2)-텍스트 데이터 수집/전처리, 토큰, 멱함수 법칙, Stop-words, Lemmatization, 텍스트 변환, TF-IDF, 분산 표상, One-hot-vector, 특성 선택/추출, 잠재 의미 분석, 분류, 군..

by 지식광부키우기 2020. 3. 26.

텍스트 마이닝 프로세스 1 : 수집과 전처리 

 

 

데이터를 수집하고 전처리하는 단계?

 

무엇을 마이닝 할 것인가

무엇을 분석 할 것인가

목적이 무엇인지

데이터가 어디에 있는지

데이터를 합법적으로 api를 통해서 받을 수 있는지 또는 스크래핑을 해야 하는지

데이터베이스 자체를 연결시켜서 접속할 수 있는지 알아보는 단계

 

 

텍스트 데이터 원천?

 

이메일, 메세지, 블로그, 뉴스기사, 리서치 페이퍼, 책, 내부 문서, 웹 마이닝

 

 

다양한 데이터셋?

 

https://www.analyticsvidhya.com/blog/2018/03/comprehensive-collection-deep-learning-datasets/

https://blog.cambridgespark.com/50-free-machine-learning-datasets-natural-language-processing-d88fb9c5c8da

https://github.com/niderhoff/nlp-datasets

https://lionbridge.ai/datasets/the-best-25-datasets-for-natural-language-processing/

 

 

텍스트를 전처리하는 과정에서 가장 기본적인 레벨(Level 0)?

 

불필요한 정보들을 제거

본문들만을 데이터로 저장하는 과정

메타 데이터를 제거하지 않기

메타 정보는 문서 분류나 시계열 분석에 유용하게 사용

 

 

메타 데이터?

 

신문 기사의 예 

기자, 날짜, 카테고리, 언어, 언론사 등

이미지를 통해서 텍스트 요약도 가능할 수 있음

 

 

텍스트 전처리 Level 1?

 

문서가 텍스트만을 수집한 상황에서 첫 번째 전처리 단계에서 많이 사용되는 것은 문장(sentence)임

문서는 가장 상위 개념 

문단은 그 하위 개념

문단 자체 단위로 분석하는 경우 없음

문단 하위 개념인 문장을 사용

 

 

문장?

 

문장 자체를 정확하게 판별하는 것은 자연어 처리 작업들을 정확하게 구현하는데 있어 중요한 필요 조건임

 

 

문장이 제대로 구분되었을 때 사용가능한 분석 방법?

 

POS-Tagger : 문장 안에서의 각각의 태그들의 확률을 최대화 시키는 것 

요약 : 어떤 문장이 중요한 문장인지 대표 문장 선정

 

 

문장 구분?

 

마침표, 느낌표, 물음표 이용

예외 사람이름, 날짜 등 마침표로 구분하면 구분 잘 안됨

인용 부호 역시 마찬가지

정확하게 구분해내는 것 쉽지 않음

 

 

한국어 처리기들의 문장 구분 기능 테스트 오픈 소스?

 

http://semantics.kr/%ED%95%9C%EA%B5%AD%EC%96%B4-%ED%98%95%ED%83%9C%EC%86%8C-%EB%B6%84%EC%84%9D%EA%B8%B0-%EB%B3%84-%EB%AC%B8%EC%9E%A5-%EB%B6%84%EB%A6%AC-%EC%84%B1%EB%8A%A5%EB%B9%84%EA%B5%90/

 

 

Rule-based Model로 문장 구분?

 

코알라NLP : 약 87.1%

Rule-based : 약 93.4%

코알라 후 Rule-based(하이브리드) : 95%

다음 작업을 생각했을 때 작은 수치의 성능 향상은 어마어마 할 수 있음

 

 

코알라 NLP?

 

문장 구조에 의존적인 성격지님

 

 

문장 구분의 어려움?

 

사람은 쉽게 구분이 되지만 컴퓨터가 하기에는 상당한 어려운 작업임

 

 

텍스트 전처리 Level 2?

 

토큰 : 가장 적은 단위의 의미가 주어진 단위

토크나이징, 토큰화로 표현됨

의미를 갖는 최소한의 단위로 만드는 것

쉬운 작업 아님

일관성있는 토큰화 작업이 필요

 

 

토큰이 아닌 예?

 

abcd

초성 중성 종성

 

 

토큰의 예?

 

단어, 숫자, 공백

 

 

토큰의 어려움 예?

 

John's sick 

토큰을 하나로 보자니 파싱문제가

토큰을 두개로 보자니 John's house 같은 것 처리 애매함

하이픈의 경우 하나의 토큰인지 두 개로 나눠야 하는지 문제 발생

신조어, C++, A/C, ㅋㅋㅋㅋ 등도 몇 개의 토큰으로 나눠야 하는지 문제 발생

공백이 없는 언어에서 토큰 잘라내기 어려움

 

 

멱함수 법칙(Power distribution)?

 

관사, 비동사, 접속사 등이 가장 많이 사용되는 단어라도 가장 중요하진 않음

문법적인 기능을 하되 의미 관점에서는 그렇게 중요하지 않음

 

 

Stop-words?

 

어떠한 분석 관점에서의 정보를 포함하지 않는 것

기능적인 역할 수행하지만 제외해도 전체적인 의미 잃어버리지 않음(관사)

a, about, above 등

..습니다, ..로서 등

제거하면 문법적으로는 논리적이지 않은 문장이 됨 

핵심적인 어휘들은 살아있어 텍스트 마이닝 관점에서 문제 없음

 

 

차원 줄이기?

 

차원을 줄이기는 고전적인 텍스트 분석에서 중요한 화두

똑같은 원형을 가진 단어에서 파생되는 어휘가 다를 경우

과거형, 미래형, 복수형, 명사형 등 단어의 변형

베이직한 형태로 맞춰 주기 

 

 

Stemming?

 

단어를 정규화 함

 

 

정규화?

 

각각의 단어들이 가지고 있는 가장 공통된 음절, 알파벳 수가 가장 긴 것을 의미

 

 

Lemmatization?

 

Stemming이 기본 형태를 찾는 거라면 Lemma는 단어들이 가지고 있는 품사를 보존하면서 단어의 원형을 찾는 것이 목적

결과물 개수 많아질 수 있어

 

 

Stemming과 Lemmatization 비교?

 

차원의 축소 관점에서는 Stem, 품사 보존에선 Lemma

 

 

텍스트 마이닝 프로세스 2 : 변환

 

 

텍스트 변환?

 

문서를 어떻게 하면 연속형의 숫자 벡터로 표현할지가 핵심

글자로 이루어진 문서를 숫자로 이루어진 벡터로 변환하는 게 목적

 

 

 Bag-of-words?

 

고전적인 방식

단어들의 모음

하나의 문서는 그 문서에서 사용되었던 단어들의 빈도 또는 출연 여부로 표현됨

각각의 문장에서 한번 이상 등장한 단어들이 속성이 됨

해당하는 문장에서 그 단어가 몇 번 등장했는지 카운팅 한 후에 벡터에다 집어 넣음

 

 

WordWeighting?

 

특정한 단어가 어떠한 문서의 얼마만큼 중요한지에 대해서 가중치 부여

가장 대표적으로 사용되었던 TF-IDF

 

 

Term frequency and inverse document frequency(TF-IDF)?

 

두가지 term의 결합

TFIDF(w)=tf(w)×log(Ndf(w))

 

 

tf(w)?

 

단어가 문서에 몇 번이나 반복적으로 등장 했는가

일반적으로 어떤 단어가 중요한 역할을 차지하려면 해당하는 문서에서 반복적으로 사용되었을 때 강조의 의미로 더 중요하다 판단 가능

 

 

Ndf(w)?

 

 

w는 코퍼스내에서 얼마나 많이 등장했는지

관사는 모든 문서에 한 번쯤은 나타났을 것

따라서 N/N이 되어 log를 씌우면 0이됨

관사는 아무리 해당하는 문서에 많이 나왔을 지라도 이 식이 0이기 때문에 관사는 어떤 특정 문서에 줄 수 있는 중요도는 0에 가까움

 

 

TF-IDF 결론?

 

단어 w가 문서 D에 중요하다면 문서 D에서는 매우 자주 등장해야 하지만 말뭉치(corpus)에는 최대한 초금 등장을 해야 한다

 

 

Bag-of-words 의미?

 

One-hot-vector 표현을 기본으로 삼겠다는 의미

 

 

One-hot-vector 표현?

 

특정한 하나의 단어를 표현하기 위한 방식

해당하는 단어가 등장하면 그 부분에 대해서만 1의 값을 표시 나머지는 전부 0

wzebra=[0001]

 

 

One-hot-vector 표현의 단점?

 

두 단어 사이의 유사성이 보존될 수 없음

어떤 두 벡터를 내적해봐도 0이 나옴

 

 

분산 표상(distributed representation)?

 

단어를 N 차원의 실수 공간 차원에다 맵핑하는 방법론 개발

차원은 벡터의 크기보단 작아야 함. n << |v|

W("cat") = (0.2, -0.4, 0.7, ...)

n차원의 벡터 공간 상에서 각각의 변수들은 전부 실수 값을 갖도록 표현함

단어들의 시멘틱(Semantic) 관계가 보존됨. 벡터 차이가 유사함

 

 

Pre-trained Word Model?

 

직접 만들지 않음

이미 알고있는 모델 이용

Word2vec, fastText, GloVe, ELMO, GPT, BERT 등

이미 충분히 많은 거대한 양의 코퍼스를 통해서 학습이 되어있는 모델 벡터들을 가지고 이용

환경이 이미 조성되어 있음

 

 

텍스트 마이닝 프로세스 3 : 차원축소

 

 

특성 선택/추출?

 

특성 부분 선택 : 특정한 목적에 걸맞는 가장 최적의 변수 집합 선택

 

 

선택?

 

주어진 변수들 가공 변형 없이 그 변수들 중에 무엇이 중요하고 아닐 것인지 판단하고 의미있고 유용한 변수들(토큰들) 사용

특정 단어들이 긍정인 문서에서 사용되거나 부정인 문서에서 사용되는 예 

 

 

중요성 판단 방법?

 

Information gain

Cross-entropy

Mutual information

Weight of evidence

Odds ratio

 

 

특성 부분 추출?

 

주어진 데이터로부터 새로운 변수들을 추출, 구축, 생성

오리지날 데이터가 가지고 있는 정보 최대한 보존 훨씬 더 적은 수의 데이터 셋을 생성 및 구축

 

 

특성 추출 기본적인 요건?

 

주어진 차원을 d라고 했을 떄 추출 후의 차원인 d'는 원래 차원보다 작아야 함 d > d'

그래야지만 차원을 축소한다는 개념에 부함

 

 

잠재 의미 분석(Latent Semantic Analysis(LSA))?

 

하나의 어떤 매트릭스를 세개의 매트릭스로 분해

주어진 단어나 문서들을 가지고 분해를 한 다음 이 중에서 2개의 매트릭스를 가져다 차원을 축소하는 방법

 

 

텍스트 마이닝에서의 SVD?

 

D \approx D_{k} = U_{k} \ \sum_{K} \ V_{k}^{T}

m개의 텀을 가지고 있고 n개의 다큐먼트를 가지고 있는 코퍼가 존재

이 코퍼스는 U, 시그마, V 3가지로 분해될 수 있음

시그마의 대각 값들은 U와 V에 대응하는 컬럼들이 얼마만큼 중요한가를 표현하는 값들

전체 모든 r차원을 사용하지 않고 r보다 작은 k의 차원을 사용하더라도 이 데이터를 재구축 할 수 있음

k 차원으로 재구축된 데이터 가지고 적절한 연산 통해 다큐멘트를 바꿀 수도 있고 텀을 바꿀 수도 있음

문서를 축약하거나 단어를 축약하는데 사용되는 방법

 

 

토픽 모델링에서 특성 추출?

 

토픽 모델의 목적은 비지도 학습 관점에서 코퍼스를 관통하고 있는 주요 주제를 판별

주요 주제가 두 가지의 결과물로 나타남

 

 

두 가지의 결과물?

 

해당하는 주제들은 각각의 문서들에 대해서 얼마만큼의 비중을 갖고 있을 것인가 문서 별로 주제의 비중

각각의 주제(토픽)별로 단어들이 얼마만큼 발생 빈도를 가지고 있을 것인가 토픽 별로 주요 키워드가 무엇인지 찾음

전자의 결과물을 사용하여 다큐먼트를 k개의 토픽을 차원수로 갖는 k 차원의 연속성의 벡터로 표현 가능(특성 추출)

 

 

자세히?

 

Per-document topic proportions : 하나하나의 다큐먼트들에서 토픽들이 얼마만큼의 비중을 차지하고 있는가

행의 합이 항상 1이됨 

한 문서에 존재하는 토픽 들의 비중의 합이기 때문

per-topic word distributions : 각각의 토픽별로 단어들이 얼마만큼의 비중을 가지고 있는지 산출 가능

열의 합이 항상 1이됨

하나의 토픽에 단어들의 비중을 나타내는 부분이기 때문

특성 추출 관점에서는 전자를 택

 

 

 

Document to vector(Doc2Vec)?

 

각각의 단어차원이 아닌 다큐먼트 차원에서 distributed representation 만들어냄

 

 

텍스트 마이닝 프로새스 4 : 학습 및 평가

 

 

문서간 유사성 판단?

 

코사인 유사도가 유클리디안 거리보다 자주 사용됨

 

 

1. 분류(Classification)?

 

학습 작업에서 가장 전통적이고 많이 쓰였던 것

감성분석도 하나의 하위 부류

Labeled documents : 문서와 함께 x와 y라는 정답이 주어짐

Y = f(X) 알고리즘 학습

새로이 들어온 Unlabeled documents 적용

Document Category 예측

 

 

대표적인 예?

 

Spam filtering

감성 분석

 

 

2. 군집화(Clustering)?

 

문서들의 유사한 쌍을 찾음

문서 집합에 있는 가장 중요한 토픽들 빠르게 판단

토픽들 사이의 관계식을 찾아냄

현재 어떤 일이 일어날 것인가 빠르게 파악

군집화 및 시각화 포함 

중요한 키워드들이 어떠한 연관성을 가지고 등장하는지

각각의 저널들이나 주제들이 어떤 식으로 유사성을 가지고 묶이는지 보여줌

 

 

군집화 예시?

 

특허 맵

 

 

3. 정보 추출(Information Extraction/Retriecval)

 

Question Answering 질문이 있을 때 가장 적절한 대답

SQuAD2.0

https://rajpurkar.github.io/SQuAD-explorer/explore/1.1/dev/Super_Bowl_50.html?model=r-net+%20(ensemble)%20(Microsoft%20Research%20Asia)&version=1.1

토픽 모델링 : 전반적인 코퍼스에서 어떤 주제들이 대다수를 차지하고 있고 그 주제들이 시간의 흐름에 따라서 어떻게 변하고 있는지를 설명해주는 관점. LDA

댓글