라벨이 NLP인 게시물 표시

Mecab과 Keras를 이용한 뉴스 말뭉치 구분 모델 구현.2 (NLP)

 1. 기존 포스트 정리 1.1 국립국어원에서 내려받은 말뭉치가 Json 형태로 구성되어있어 따로 접근을 시도했다. 1.2 따로 학습을 시도하기보다는 라벨링 하나하나를 위해 데이터와 라벨링을 한번에 학습했다.  1.3 데이터 전처리는 케라스에서 제공하는 모듈들을 이용했다. 2.데이터 전처리  tokenizerr.fit_on_texts(topics) topic_train = tokenizerr.texts_to_sequences(topics) tokenizerr.fit_on_texts(newtext) textdata_train = tokenizerr.texts_to_sequences(newtext) fit_on_texts와 texts_to_sequences는 단어를 하나의 정수와 연결해 딥러닝에 사용될 수 있도록 해준다. 여기서는 각 말뭉치를 형태소 분석기로 분해한 본문과 주제를 하나하나의 정수와 매칭시켰고 확인 결과 약 1000개의 단어 종류를 확인할 수 있었다.  textdata_train = pad_sequences(textdata_train , maxlen = 170 ) topic_train = pad_sequences(topic_train , maxlen = 1 ) 여기서는 전체 길이를 맞춤과 동시에 빈자리를 Null 채우지 않기 위해 Padding하는 작업이다. 작업하는 방법으로는 pad_sequences를 이용하였다. maxlen는 기존의 본문을 분석한 결과 약 150~170단어 사이로 하나의 본문이 이루워져 있었고 따라서 최대 길이를 170으로 맞추어 Padding했다. 토픽(주제)은 하나의 정수로 이루어져 있었기에 1로 맞추었다. 3.모델 구현 model = Sequential() model.add(Embedding( 1000 , 128 )) model.add(LSTM( 128 )) model.add(Dense( 10 , activation = 'softmax' )) 일단 모델의 임베딩 레이어의 크기를 설정했다 임...

Mecab과 Keras를 이용한 뉴스 말뭉치 구분 모델 구현.1 (NLP)

이미지
AI의 지도학습에는 크게 두 가지가 있다. 바로 분류(Classification)와 회귀(Regression)이다. 간략하게 설명하자면 들어온 input 자료들을 일정 기준으로 나누는 건 분류 들어온 자료들을 통해 다음 데이터를 예측하는 방식을 회귀라고 생각하면 편하다. 그리고 이번 포스트에서는 뉴스 말뭉치(말 자료들)을 이용하여 뉴스가 어느 분류에 속하는지에 분류하는 모델을 구현해 보겠다.  모델의 구현에 들어가기 전 미리 알아두어야 할 것들을 먼저 소개하겠다. 1. LSTM, RNN에 대하여    https://soobarkbar.tistory.com/74 본 포스팅에서 사용할 것은 LSTM 모델이다. 기존의 신경망의 단점을 보완한 것이라고 생각하면 편하다. 위의 블로그를 방문해서 공부하는 것을 추천한다. 2. Mecab 우리말 형태소 분석기 (은전한닢) http://eunjeon.blogspot.com/ 은전한잎이라는 우리말 형태소 분석기다. konlpy 기반으로 제작되었다고 하며 형태소 단위로 분류하는 것이 가능하게 만들어 준다. 다양한 종류의 분석기 중 은전한잎을 사용하겠다. 설치방법, 파일등은 위 사이트를 이용하기 바란다. 3. 케라스 API https://keras.io/api/ 본 포스팅에서 사용될 API들이다. 미리 학습하면 포스팅을 이해하는데 큰 도움이 된다. 4. 자연어 처리  https://www.sas.com/ko_kr/insights/analytics/what-is-natural-language-processing-nlp.html 자연어 처리 (NLP)에 대한 내용이다.  본 모델의 이야기이기 때문에 기본적으로 알아야 하는 내용들이다. 5. 감성분류 예제 (추가학습)  https://wikidocs.net/44249 네이버 영화 리뷰를 긍정:1 부정:0 으로 라벨링한 데이터를 이용해 학습을 진행하고 구현하는 방법을 알려주는 블로그 포스트이다. 이번 포스트와 많은 차이가 있지만...