본문 바로가기

반응형

텍스트 마이닝

(52)
Word2Vec, ELMo, Doc2Vec의 이해 (2) 11.2 ELMo - 문맥에 따른 단어 의미의 구분 11.2.1 Word2Vec의 문제점 동음이의어 구분의 여러움 ELMo(Embeddings from Language Model)를 통해 자연어 처리의 성능 향상 ELMo: 문맥을 반영한 워드 임베딩 모형 중 하나 11.2.2 ELMo의 구조 사전학습된 양방향 LSTM을 사용해 임베딩을 수행 ELMo 임베딩 벡터 산출 과정 11.3 Doc2Vec - 문맥을 고려한 문서 임베딩 문서에 대해 직접 임베딩함 Doc2Vec의 학습 구조 DM(Distributed Memory): Word2Vec의 CBOW에 문서 ID를 추가한 형태 DBOW(Distributed Bag of Words): Skip-Gram에 문서 ID를 추가한 형태 ※ 해당 내용은 의 내용을 토대..
Word2Vec, ELMo, Doc2Vec의 이해 (1) 11.1 Word2Vec-대표적인 워드 임베딩 기법 11.1.1 Word2Vec 학습의 원리 Word2Vec 기법에서 학습의 목적은 단어에 의미적인 정보를 함축함으로써 유사도를 계산하거나 연산을 수행하고, 더 나아가서 학습된 결과를 다른 작업에서도 사용할 수 있는 전이학습을 지원하는 것 Word2Vec은 주변의 단어를 이용해 중심에 있는 단어를 예측하도록 학습함(CBOW에 한해서) CBOW(Continuous Bag of Words), Skip-Gram의 두 가지 학습 방식을 가짐 CBOW: 문장에서 윈도(앞뒤 단어들을 몇 개씩 예측에 사용할지 결정하는 범위)를 뒤로 이동하며 학습에 사용할 입력과 출력을 만듬 Skip-Gram: CBOW와 달리 중심 단어를 입력으로 해서 주변의 여러 단어들을 예측 11...
RNN-딥러닝을 이용한 문서 분류 (6) 10.4 LSTM, Bi-LSTM과 GRU를 이용한 성능 개선 LSTM은 장기 기억정보를 추가함으로써 장기의존성을 학습 GRU(Gated Recurrent Unit): LSTM을 간소화한 모형으로 계산량이 적고 속도가 빠르면서도 좋은 성능을 냄 Bi-LSTM: 역방향의 영향을 함께 구현하기 위해 사용 from tensorflow.keras.optimizers import legacy as legacy_optimizers from tensorflow.keras import optimizers model = Sequential([ Embedding(max_words, 64), Bidirectional(LSTM(64)), Dense(64, activation='relu'), Dense(1, activation..
RNN-딥러닝을 이용한 문서 분류 (5) 10.3 RNN을 이용한 문서 분류 10.3.3 문서의 순서정보를 활용하는 RNN 기반 문서분류 Flatten() 대신에 SimpleRNN() 레이어를 사용 from tensorflow.keras.layers import SimpleRNN from tensorflow.keras.optimizers import Adam model = Sequential([ Embedding(max_words, 32), SimpleRNN(32), # 펼쳐서 flat하게 만드는 대신 RNN 모형을 사용, maxlen만큼의 시계열 데이터 Dense(32, activation='relu'), Dense(1, activation='sigmoid') ]) model.summary() adam = Adam(learning_rate=1..
RNN-딥러닝을 이용한 문서 분류 (4) 10.3 RNN을 이용한 문서 분류 10.3.2 RNN이 아닌 일반적인 신경망 모형을 이용한 분류 임베딩 레이어, Flatten() 레이어, Dense() 레이어로 이루어진 Sequential 모형 # 케라스 모형 생성 및 학습 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Flatten, Dense, Embedding model = Sequential([ #순차적 모형 Embedding(max_words, 32, input_length=maxlen), #word embedding layer 생성 # max_words는 one-hot encoding을 할 때의 vector 크기가 됨 - 사용된 단어의 수..
RNN-딥러닝을 이용한 문서 분류 (3) 10.3 RNN을 이용한 문서 분류 10.3.1 워드 임베딩을 위한 데이터 준비 import nltk nltk.download('movie_reviews') """ [nltk_data] Downloading package movie_reviews to /root/nltk_data... [nltk_data] Unzipping corpora/movie_reviews.zip. True """ from nltk.corpus import movie_reviews fileids = movie_reviews.fileids() #movie review data에서 file id를 가져옴 reviews = [movie_reviews.raw(fileid) for fileid in fileids] #file id를 이용해 ..
RNN-딥러닝을 이용한 문서 분류 (2) 10.2 워드 임베딩의 이해 10.2.1 워드 임베딩이란? 범주형 데이터를 수치로 변환하는 방법 원핫 인코딩(one-hot encoding): 범주형 데이터를 벡터 형태의 연속된 수치로 변환하는 것 원핫 벡터: 원핫 인코딩의 결과 임베딩: 범주형 데이터를 연속적인 값을 갖는, 상대적으로 작은 크기의 벡터로 변환하는 작업 밀집 벡터: 희소 벡터의 반대개념 임베딩을 수행하는 이유 차원이 큰 원핫 벡터를 그대로 쓰면 연산이 비효율적 대상 간의 의미적 유사도를 계산할 수 있음 단어가 의미적인 정보를 함축함으로써 연산이 가능해질 수 있음 전이학습을 가능하게 함 10.2.2 BOW와 문서 임베딩 BOW에서는 단어가 아닌 문서 단위로 임베딩이 이루어짐 문맥에 대한 파악은 이뤄지지 않음 10.2.3 워드 임베딩과 딥러..
RNN-딥러닝을 이용한 문서 분류 (1) 10.1 왜 RNN일까? 10.1.1 RNN의 이해 RNN(Recurrent Neural NEtworks): 순환 신경망, 시계열 데이터를 다루기 위한 모형 시계열 데이터: 어떤 변수의 값이 시간에 따라 변화하는 것 시계열 모형에서는 입력으로 일정 기간의 연속된 값을 사용 10.1.2 RNN이 문서 분류에 적합한 이유 사람이 문맥을 이해하는 것이 순차적으로 들으면서 이해하는 형태 RNN은 앞에서부터 순차적으로 미치는 영향을 계속 축적하는 모형임 RNN은 구조상 문맥을 파악하기에 좋은 모형 RNN은 딥러닝의 대표적인 문제인 경사소실 문제가 심각 개념적으로 보았을 때 RNN은 문맥의 파악을 잘 반영하며 텍스트 마이닝에 딥러닝을 적용하는 의미 깊은 출발점이 됨 10.1.3 RNN의 문서 분류 적용방향 각 단어..
인공신경망과 딥러닝의 이해 9.1 인공신경망의 이해 9.1.1 인공신경망의 구조와 구성요소 인공신경망은 인간의 뇌를 본따서 ㅁ나들어짐 뇌의 뉴런들은 수상돌기를 통해 다른 뉴런들로부터 입력신호를 받아들이고 변환과정을 수행한 후에 축삭돌기를 이용해 다른 뉴런에 전달 인공신경망에서는 노드가 뉴런과 같은 역할을 함 여러 노드에서 값을 받아 가중합을 계산하고 활성화 함수를 적용해서 값을 변환한 후 다음 노드로 전달 9.1.2 인공신경망에서의 학습 학습: 주어진 학습 데이터를 이용해 올바른 가중치를 찾아가는, 조정하는 과정 인공신경망은 입력값들에 대해 목표 출력값 혹은 실제 출력값을 매칭시킨 학습자료를 이용해서, 주어진 입력값에 대해 매칭되는 출력값을 예측할 수 있도록 가중치를 조정하는 지도학습 사용 9.1.3 손실함수의 이해 손실 함수: ..
감성 분석 (3) 8.3 학습을 통한 머신러닝 기반의 감성 분석 8.3.1 NLTK 영화 리뷰에 대한 머신러닝 기반 감성 분석 from sklearn.model_selection import train_test_split #sklearn에서 제공하는 split 함수를 사용 X_train, X_test, y_train, y_test = train_test_split(reviews, categories, test_size=0.2, random_state=7) print('Train set count: ', len(X_train)) print('Test set count: ', len(X_test)) """ Train set count: 1600 Test set count: 400 /usr/local/lib/python3.10..

반응형