반응형

위키 모델을 이용해서 한다.

pos norm ->정교화

stem ->원형으로

model.wv.similarity(word, '급하다') ->유사도가 얼마인지

 

문장 -> sentence tokenizer -> word tokenizer

사용자 함수 사용해서 한 번에 처리 하는 것 ->

자연어 언어 처리 프로세스를 vectorize ->형태소 (최소 단위) ->feature vector(컴퓨터가 숫자로 알게끔)

->개수 하는 것 countervectorizer 단점 메모리 많이 잡아서 tf-if vectorizer ->

희소행렬 방식 의미랑 문맥을 단어와 단어를 연산 가능하는 것 wordembedding 방식이 있다.

 

감성 분석

암인데 암이 아니라고 예측하는 것과  -> 이것이 더 중요하다.

암이 아닌데 암이라고 예측하는 것   -> 비용이 들수 있지만

그래서 두가지를 똑같이 보면 안된다.

 

교차검증

이유: 학습 데이터와 검증 데이터를 나누고 학습 데이터 가지고 학습 하고 나서

학습용 데이터를  학습한다. 하지만 학습데이터가 적을 경우 문제가 발생될 경우가 있어서

데이터를 5개 분류로 나눈다.

데이터를 바꿔가면서 하기 때문에 데이터 왜곡 문제를 해결할 수 있다

 

 

 

one-hot 인코딩은 count

문맥 연산화 하게 해서

one -hot encoding 강아지 고양이 관계 등 ...

 

vector방식

back of words-> counte , tfidf

wordvector - >word_embedding(강아지와 고양이 고양이와 멍멍이 ) 좀더 정확하게 작업을 진행할 수 있도록 하는것  word to vector하면 유사도 등도 관계까지 해준다.

 

 

#정규 표현식을 이용하여 숫자를 공백으로 변경

import re

#news_df = news_df.fillna(' ') #null 없에기

news_df.document = news_df.document.apply(lambda x: re.sub(r'\d+','',x))

news_df.document[2]

 

텍스트 전처리 정규화 ,토큰화 필어링, stop wording

필터 백터화 :  one-hot encodinng : count base이다. 그 단어에 숫자가 몇번 있는지 count기반으로 하면 의미가 없는데 count가 많아서 문제가 생길 수있다.  보완하는것이 tf-idf(penalty부여한다.)

                       wordembedding

 

한글 텍스트 처리 okt (5개에서 okt 배웠다.)

pos  norm stem join(word, 품사)

nouns 명사

phrase 구조

morpus

 

wordembedding -> word2vec

(skip-gram 단어를 중심으로

cbow 단어의 주위를 중심으로 )

toji.model 활용해서 했다.데이터가 적어서 공감이 안나와서 데이터가 많은 위키피디아 한국어로 헀다.

위키피디아 한글은 데이터가 많아서 직접 만들수 없어서 모델을 가지고 실습했다. 토지때 보다는 공감이 가는 것이 많이 나왔다.

 

프로젝트에서도 말뭉치의 중요성: 이것이 되야만 서비스 등이 확대가 될 수 있다.

 

Cosine 유사도의 특징 및 장단점

코사인 유사도는 특히 결과값이 [0,1]의 범위로 떨어지는 양수 공간에서 사용된다.(from 위키피디아)

 

모델 튜닝

1.     drouputout

2.     l1규제(절대값을 기준으로 ), l2규제(scale을 기준으로 하고 ) l2규제를 많이 사용한다.

3.     조기종료

 

 

openCV

  • Open Source Computer Vision Library는 오픈소스 이미지(동영상) 라이브러리
  • 이미지 형식 변환, 필터 처리, 얼굴 인식, 물체 인식, 문자 인식 등 이미지와 관련된 다양한 처리
  • 머신러닝에서 OpenCV 사용 : 머신러닝의 입력으로 전달하려면 이미지를 숫자 배열 데이터로 변경
  • pip install opencv-python
반응형

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

NLP-1  (0) 2020.11.26
반응형

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