반응형

NLP  -> 챗봇 , 번역 ,

사람의 말을 기계가 응용할 수 있다면

 

텍스트 전 처리 : 텍스트 정규화 : 클랜징 , 토큰화 , 필터링(Stop words)

                       피처 백터화: BOW, 희소행렬, COUNT/tF-IDF

한글 텍스트 처리

감성분석

테스트 분류

토픽 군집화 : 카테고리 별로 분류

 

데이터를 쉽게 찾도록 카테고리 별로 한다. 정치 등 .

 

 

SCALA ->크기만 따기조

VECTOR는 방향도 고려한다.

 

문서가있으면 토큰화해서  문장단위로 나눈다. 그다음 단위로 나누다.그다음 컴퓨터가 알수있는 언어로 한다.

0 1

 

희소행렬 :

형태소 :의미가 통하는 최소단위를 형태소 라고 한다.

 

평가

결정 계수 R ^ 2

혼동 행렬

교차 검증  k - fold

hypperparameter

 

 

NLP

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

 

기계가 이행하려면 단어별로 나누어야 한다. tokenize라고 한다.  -> feature vectorone-hot  encoding으로 했다.기계는 01로 구분한다.

사전 작업을 먼저 해준다.

단어를 바꾸기 위해서는 reference가 필요하다.  사전

 

데이터를 형태소로 나누다.

cat 0 1 로 말뭉치 사전 -> 사전 가이드

 

단어를 사전을 사용하여 매핑하고 이를 백터로 변환

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

 

 

 

 

이미지 영상 딥러닝이 훨씬 더 놀라운 performance를 나온다.  머신러닝 보다.

 

자연어 관련 용어

Corpus(말뭉치 ) : 텍스트(문서)의 집합

Token(토큰): 단어처럼 의미르 가지는 요소

Morphemes(형태소) : 의미를 가지는 언어에서 최소 단위

형태소는 언어학에서 일정한 의미가 있는 가장 작은 말의 단위로 발화 체 내에서 따로 떼어낼 쑤 있는 것을 의미 ,. , 더 분석하면 뜻이 없어지는 말의 단위.

Post(품사) : ex)  Nouns, Verbs

Stopword(불용어): 필요없는 것을 제거 조사 , 접미사와 같이 자주 나타나지만 실제 의미에 기여하지 못하는 단어들

Semming(어간 추출) : 어간만 추출하는 것을 의미(running ,runs, run->run) -> 되다.

Lemmatization(음소표기법): 앞뒤 문맥을 보고 단어를 식별하는 것

 

vector가 하는 종류

NlP - 텍스트 벡터화

one-hot encoding(Spare representation) 필요없는 메모리를 많이 먹는다.

단어를 백터로 바꾸는 가장 단순한 방법은 단어에 번호를 매기고 , 그 번호에 해당하는 요소만 1이고 나머지는 0을 갖는 백터로 변경

N개의 단어가 있다면 각 단어는 한 개의 요소만 1N차원 백터로 표현

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

문맥상이 다르다는 점은 전혀 반영이 안된다.

 

Word Embedding(Dense representaion , distributed representation)

백터간의 덧셈 뺏샘이 해당하는 단어 간의 의미의 합과 의미의 차로 반영

자연어 처리의 경우 대상은 텍스트이고 , 이 텍스트의 속성을 표현해 놓은 것이 데이터

각각의 속성을 독립적인 차원으로 표현하지 않고 우리가 정한 개수의 차원으로 대상을 대응 시켜서 표현

 

 

 

Dense Representation의 장점 -> 차원을 줄일 수 있다. word와 문맥

적은 차원으로 대상을 표현 ,차원이 높으면 저주 (curse of dimensionality)라는 문제 발생

더큰 일반화 능력 (generalization power)

 

 

predictive method란 지도학습을 통하여 맥락으로 단어를 예측하거나 단어로 맥락을 예측

 

 

알고리즘

맥락으로 단어를 예측하는 CBOW()

단어로 맥락을 하는 SKIP

 

자연어 처리 PYTHON 라이브러리

1.NLTK -nlp의 거의 모든 영역을 처리한다.

 

2.KoNLPy

-우리나라 한글에 특화된 자연어 처리 라이브러리:

-단어 품사 별 분류 : hannanu, kkma, okt, komoran , mecab

 

3.Genism

-문서 사이의 유사도를 계산 , 텍스트 분석을 돕는 라이브러리 (wORD2Vec제공)

-Word Embedding: word2Vec

4.spacy

5.scikit-learn

 

conda install jupyter notebook

 

형태소 : 의미를 가지는 최소 단위'

feature vector화 해서 컴퓨터가 처리 할 수 있게 한다

 

#### 텍스트 전처리 - 텍스트 정규화

- 클렌징 : 분석에 방해되는 불필요한 문자, 기호를 사전에 제거. HTML, XML 태그나 특정 기호

- 토큰화 : 문서에서 문장을 분리하는 문장 토큰화와 문장에서 단어를 토큰으로 분리하는 단어 토큰화

- 필터링/스톱워드 제거/철자 수정 : 분석에 큰 의미가 없는 단어를 제거

- Stemming, Lemmatization : 문법적 또는 의미적으로 변화하는 단어의 원형을 찾음

 - Stemming은 원형 단어로 변환 시 일반적인 방법을 적용하거나 더 단순화된 방법을 적용

 - Lemmatization Stemming 보다 정교하며 의미론적인 기반에서 단어의 원형을 찾음

 

 

 

피처 벡터화 : One-hot encoding

  • Bag of Words : 문맥이나 순서를 무시하고 일괄적으로 단어에 대한 빈도 값을 부여해 피처 값을 추출하는 모델
  • 단점 : 문맥 의미 반영 부족, 희소 행렬 문제
  • BOW에서 피처 벡터화 : 모든 단어를 컬럼 형태로 나열하고 각 문서에서 해당 단어의 횟수나 정규화된 빈도를 값으로 부여하는 데이터 세트 모델로 변경하는 것
  • 피처 벡터화 방식 : 카운트 기반, TF-IDF(Term Frequency - Inverse Document Frequency) 기반 벡터화
  • 카운트 벡터화 : 카운트 값이 높을수록 중요한 단어로 인식. 특성상 자주 사용되는 보편적인 단어까지 높은 값 부여
  • TF-IDF : 모든 문서에서 전반적으로 자주 나타나는 단어에 대해서 패널티 부여. '빈번하게', '당연히', '조직', '업무'
  • 파라미터
    • max_df : 너무 높은 빈도수를 가지는 단어 피처를 제외
    • min_df : 너무 낮은 빈도수를 가지는 단어 피처를 제외
    • max_features : 추출하는 피처의 개수를 제한하며 정수로 값을 지정
    • stop_words : 'english'로 지정하면 스톱 워드로 지정된 단어는 추출에서 제외
    • n_gram_range : 튜플 형태로 (범위 최솟값, 범위 최댓값)을 지정
    • analyzer : 피처 추출을 수행하는 단위. 디폴트는 'word'
    • token_pattern : 토큰화를 수행하는 정규 표현식 패턴을 지정
    • tokenizer : 토큰화를 별도의 커스텀 함수로 이용시 적용

 

 Okt 에서 제공되는 함수

  • okt.morphs() 텍스트를 형태소 단위로 나눈다. 옵션으로 norm stem이 있다. norm은 문장을 정규화. stem은 각 단어에서 어간을 추출.(기본값은 둘다 False)
  • okt.nouns() 텍스트에서 명사만 뽑아낸다.
  • okt.phrases() 텍스트에서 어절을 뽑아낸다.
  • okt.pos() 각 품사를 태깅하는 역할을 한다. 품사를 태깅한다는 것은 주어진 텍스트를 형태소 단위로 나누고, 나눠진 각 형태소를 그에 해당하는 품사와 함께 리스트화하는 것을 의미한다. 옵션으로 norm, stem, join이 있는데 join은 나눠진 형태소와 품사를형태소/품사형태로 같이 붙여서 리스트화한다.
반응형

'Study > NLp' 카테고리의 다른 글

NLP-2  (0) 2020.11.30

+ Recent posts