딥러닝/자연어처리 14

위키독스 LDA실습 2 - sklearn이용

1. 데이터 다운 (1) 데이터 다운 nltk.download() import pandas as pd import urllib.request urllib.request.urlretrieve("https://raw.githubusercontent.com/franciscadias/data/master/abcnews-date-text.csv", filename="abcnews-date-text.csv") data = pd.read_csv('abcnews-date-text.csv', error_bad_lines=False) # 데이터는 총 100만개 print(len(data)) (2) 데이터 상태 보기 # 데이터는 2개의 열로 이루어져 있음 # publish_data : 뉴스가 나온 날짜, headline_t..

위키독스 LDA실습 1 -gensim라이브러리 이용

위키독스 교재에 있는 주제추출 알고리즘 LSA실습을 진행해본다 wikidocs.net/30708 1. 데이터 추출 뉴스기사 11314건을 사용한다. (1) 필요한 라이브러리 다운 import pandas as pd from sklearn.datasets import fetch_20newsgroups dataset = fetch_20newsgroups(shuffle=True, random_state=1, remove=('headers', 'footers', 'quotes')) documents = dataset.data len(documents) 11314 (2) 데이터 형태 확인 documents[1] (3) 카테고리확인 총 20개의 토픽이 있다. print(dataset.target_names) (4)..

코랩을 이용하여 doc2vec 모델 학습하기

0. 서론 gensim 라이브러리를 이용하여 doc2vec모델을 만들어보았다. 위키피디아 데이터를 이용하여 doc2vec모델을 학습시켰다. 처음으로 시도한 방법은 로컬에서 클래스를 만들고, 한줄씩 yield하면서 모델을 학습시키는 것이였다. (소스코드1) 1. 소스코드1 (한번에 학습하는 방법.) class Doc2VecSentences: def __init__(self,path): self.path=path self.keyDict={} def clean_str(self,text): pattern = '([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)' # E-mail제거 text = re.sub(pattern=pattern, repl='', string=text) ..

konlpy 라이브러리를 이용한 형태소 분석

0. 서론 konlpy라는 라이브러리가 있다. 한국어 형태소분석을 할 수 있는 여러개의 클래스가 모여있는 라이브러리이다. 공식 사이트는 여기 konlpy-ko.readthedocs.io/ko/v0.4.3/ 라이브러리를 임포트해서 사용해보도록 한다. 1. 라이브러리 import #konlpy에 있는 클래스 모두 import from konlpy.tag import * import re import pandas as pd import requests from bs4 import BeautifulSoup 5개의 클래스가 있고, 출처는 아래와 같다. Hannanum: 한나눔. KAIST Semantic Web Research Center 개발. http://semanticweb.kaist.ac.kr/hannan..

gensim 라이브러리를 이용하여 Doc2vec모델 학습하기 - 2. class iter활용

1. train함수 이용하기 : sosoeasy.tistory.com/326 2. class를 만들고, iter함수를 이용하여 객체를 만드는식으로 학습하기 class의 iter함수를 이용하여 doc2vecr객체를 생성함과 동시에 모델을 학습시키는 방법. 아래와 같은 내용이 들어있는 txt파일을 저장하고 읽어오는 식으로 진행된다. 1. 라이브러리 다운 from gensim.models import Doc2Vec from gensim.models.doc2vec import TaggedDocument from konlpy.tag import Okt 2. 클래스 생성 파일에서 한줄씩 문장을 읽으면서 형태소분해하고, tagged list type으로 변환하여 yield하는식으로 진행된다. class Doc2Vec..

gensim 라이브러리를 이용하여 Doc2vec모델 학습하기 - 1.train function 이용

1. train함수 이용하기 2. class를 만들고, iter함수를 이용하여 객체를 만드는식으로 학습하기 : sosoeasy.tistory.com/327 1. 라이브러리 다운 okt: 한국어 형태소 분석을 위한 라이브러리 from gensim.models.doc2vec import Doc2Vec, TaggedDocument from konlpy.tag import Okt 2. 데이터 전처리 taggedDocument 타입으로 만들어야 학습이 가능하다. 이때 형태소 단위로 문장을 분해해야 의미적으로 학습하기 좋다. #데이터 전처리 okt=Okt() #형태소 분해 객체 생성 data = ["나는 학교에 간다", "나는 친구를 만난다", "나는 영화보러 간다", "영화가 재밌다", "나는 공부를 하러 왔다"..

gensim라이브러리로 학습한 doc2vec모델의 함수들

1. 모델 불러오기 불러온 모델은 문서별로 번호가 태그되여 있습니다. from gensim.models import Doc2Vec #모델 저장 doc2vec_model=Doc2Vec.load('model/doc2vec_morph.model') 2. 학습한 문서중 비슷한 문서 찾기 # a(태그번호 or 벡터화된 문서)문서와 비슷한 문서를 b개 리턴한다. a="276" b=5 for i in doc2vec_model.docvecs.most_similar(a,topn=b): print(i) ('76889', 0.8220891952514648) ('148', 0.816669762134552) ('52004', 0.8151654005050659) ('155489', 0.8135135769844055) ('4188..

단어를 표현하는 방법. 원핫벡터와 워드임베딩

단어를 분석하기 위해선 문자를 정형데이터로 바꿔야 한다. 이때 사용하는 기법이 원핫벡터와 워드임베딩 1. 원핫벡터 문서에 나오는 모든 단어들(코퍼스)의 개수만큼 차원을 가지고, 해당단어만 1, 나머지는 0을 갖는 행렬로 표현 ex) 나는 강아지를 좋아한다. 나는 강아지를 좋아한다 나는 1 0 0 강아지를 0 1 0 좋아한다 0 0 1 나는 => [1,0,0] 강아지를 => [0,1,0] 좋아한다 => [0,0,1] * 하지만 문서의 양이 커지고, 단어의 수가 많아지면 차원이 너무 커지는 문제점이있다. 따라서 워드 임베딩을 통해표현한다 희소표현(원핫벡터) -> 분산표현(워드임베딩) 2. 워드임베딩 (1) 인풋단어 원핫인코딩 (2) 임베딩(첫번째 가중치 곱하기) (3) 인베딩한단어(벡터)들의 평균구하기 (4..

[RNN] LSTM으로 감성분석

1. tensorflow keras import tensorflow as tf from tensorflow.keras import layers from tensorflow.keras.datasets import imdb from tensorflow.keras.preprocessing import sequence 2. 최대 단어 개수와 길이 # 최대 단어의 개수 max_features = 10000 # 최대 단어 길이 (한번의 인풋당 들어갈 단어의 수) maxlen = 200 # num_word : 빈도가 높은 상위 max_features개 단어만 사용함. # skip_top : 빈도가 높은 상위 단어 0개 제외 (input_train, y_train), (input_test, y_test) = imdb...