NLP 과정

텍스트 전처리, 피처 벡터화, 텍스트 분석

과정 내용 라이브러리
텍스트 전처리 텍스트 정규화 : 클랜징, 토큰화, 필터링(Stop words)
피처벡터화 : BOW, 희소행렬, Count/TF-IDF
NLTK
한글 텍스트 처리 형태소, 형태소 분석기(okt),
Word2Vec(Skip-gram, CBOW), toji.model활용
Word2Vec모델활용(위키디피아한국어)
KoNLPy 설치,
Gensim 설치
감성분석 네이버 영화평점 감성분석 : 150k, 200k dataset
IMDB 영화평감성분석 : 지도학습, 비지도학습
ML(지도), NLTK WordNet, VADER(비지도)
IMDB 신경망 모델(임베딩학습)
DT, LR, RF, SVM, KNN
GridSearchCV,
Pipeline
Keras
텍스트분류 20뉴스그룹 : 텍스트 정규화, 피처벡터화, ML 학습/평가
네이버뉴스 : TF-IDF 사전 활용, MLP 학습/평가
DP,LR, RF, SVM, KNN
Pipeline GridSearchCV 결합
Keras
토픽
군집화
유사도
토픽모델링(20 뉴스 그룹) : 연관도 높은 Word 추출
문서 군집화, 군집 별 핵심단어(Opininon Review Dataset)
문서 유사도 측정 : 코사인 유사도(Opinion Review Dataset)
LDA
Clustering, clustercenters
Cosine_similarity

자연어 처리 python 라이브러리

1. NLTK

  • 파이썬의 대표적이 자연어 처리 라이브러리
  • 방대하 데이터 세트와 서브 모듈을 가지고 있으며 NLP의 거의 모든 영역을 커버

2. NKoNLPy

  • 우리나라 한글에 특화된 자연어 처리 라이브러리
  • 단어 품사 별 분류 : hannanum, kkma, okt, komoran, mecab

3. Gensim

  • 문서 사이의 유사도를 계산, 텍스트 분석을 돕는 라이브러리(Word2Vec 제공)
  • 토픽 모델링(Topic Modeling) 분야에서 가장 두각
  • Word Enbedding : word2Vec

4. Spacy

  • 연구보다는 생산용으로 고안된 고급 NLP를 위한 오픈 소스 라이브러리. 심도 깊은 데이터마이닝 가능

기계가 자연어를 이해하는 방법

  • 'apple'은 사과인가, 회사인가

    • 사람은 문장의 컨텍스트(Contest)를 통해 이해
    • 기계는 단어를 수치적으로 표현해야 이해
    • 이를 Word Embedding 이라고 표현
    • 텍스트를 숫자로 표현하는 것은 같은 문자라고 하더라도 다른 수치로 표현
  • 'the cat sat on the mat'을 기계가 이해하려면

    • [the, cat, sat, on, mat] 단어별 분류 후 One hot encoding을 통해 0, 1로 표현
    • 'cat'은 [0, 1, 0, 0, 0, 0], 'the'의 경우 [1, 0, 0, 0, 0, 0] 으로 나타냄
  • 단어를 사전을 사용하여 매핑하고 이를 벡터로 변환

    • 벡터화를 시켜 숫자로 표현하면 분류나 회귀 등의 다양한 분석이 가능

자연어 관련 용어

용어1 용어2 내용
Corpus 말뭉치 텍스트(문서)의 집합
Token 토큰 단어처럼 의미를 가지는 요소
Morphemes 형태소 의미를 가지는 언어에서 최소 단위
언어학에서 일정한 의미가 있는 가장 작은 말의 단위로 발화 체 내에서 따로 떼어낼 수 있는 것을 의미.
즉 , 더 분석하면 뜻이 없어지는 말의 단위
POS 품사
Stopword 불용어 조사, 접미사와 같이 자주 나타나지만 실제 의미에 기여하지 못하는 단어들
Stemming 어간추출 어간만 추출하는 것을 의미 (running, runs, run->run)
Lemmatization 음소표기법 앞뒤 문맥을 보고 단어를 식별하는 것

텍스트 벡터화

1. One-hot encoding (Sparse representation)

  • 단어를 벡터로 바꾸는 가장 단순한 방법은 단어에 번호를 매기고, 그 번호에 해당하는 요소만 1이고 나머지는 0을 갖는 벡터로 변경
  • 총 5개의 단어가 있는데 '강아지'라는 단어에 2번을 매겼다고 하자. 그러면 '강아지'는 2번째 요소만 1이고 나머지는 모두 0인 5차원이 벡터로 표현된다.
  • N개의 단어가 있다면 각 단어는 한 개의 요소만 1인 N차원의 벡터로 표현

  • 단점은 벡터 표현에 단어와 단어 간의 관계가 전혀 드러나지 않는다는 점

2. Word Embedding(Dense representation, distributes representation)

  • 단어를 벡터로 바꿀 때, 좀 더 똑똑하게 바꿔서 벡터에 단어의 의미를 담을 수 있다면 어떨까?
  • 비슷한 의미의 단어들은 비슷한 벡터로 표현이 된다면?
  • 단어와 단어 간의 관계가 벡터를 통해서 드러날 수 있다면?
  • 벡터 간의 덧셈 뺄셈이 해당하는 단어 간의 의미와 합과 의미의 차로 반영
  • 자연어 처리의 경우 대상은 텍스트이고, 이 텍스트의 속성을 표현해 놓은 것이 데이터
  • 각각의 속성을 독립적인 차원으로 표현하지 않고 우리가 정한 개수의 차원으로 대상을 대응시켜서 표현
  • '강아지'란 단어는 [0.16, -0.50, 0.20, -0.11, 0.15] 라는 5차원 벡터로 표현

3. Dense Representation의 장점

  • 적은 차원으로 대상을 표현. 차원이 높으면 차원의 저주(curse of dimensionality)라는 문제 발생
  • 더 큰 일반화 능력(generalization power). '강아지'와 '멍멍이'가 서로 비슷한 벡터로 표현이 된다면 '강아지'에 대한 정보가 '멍멍이'에도 일반화

4. 아이디어

  • predictive method란 지도학습을 통하여 맥락으로 단어를 예측하거나 단어로 맥락을 예측
  • 이 예측 모델을 학습하면서 단어를 어떻게 표현해야 할 지를 배우게 되고, 이 과정에서 비슷한 단어가 비슷한 벡터로 표현

results matching ""

    No results matching ""