ML/딥 러닝을 이용한 자연어 처리

머신러닝 / 딥러닝 스터디 정리
ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 12. 태깅 작업 - 개체명 인식

개체명 인식이란? 이름을 가진 개체를 인식하는 것을 뜻하며 어떤 이름을 의미하는 단어를 보고 그 단어가 어떤 유형인지를 인식하는 것을 뜻함 즉, 개체명 인식을 사용하면 코퍼스로부터 어떤 단어가 사람, 장소, 조직 등을 의미하는 단어인지 찾을 수 있음 개체명 인식은 챗봇 등에서 필요한 주요 전처리 작업 예) '유정이는 2018년에 골드만삭스에 입사했다.' 유정 : 사람, 2018 : 시간, 골드만삭스 : 조직 NLTK를 이용한 개체명 인식 NLTK에서는 개체명 인식기인 NER chunker를 지원하고 있으므로 별도 개체명 인식기를 구현할 필요없이 NLTK를 사용해서 개체명 인식을 수행할 수 있음 개체명 인식기를 통해 개체명을 태깅하기 위해서는 품사 태깅이 수행되어야 함 BIO 표현 개체명 인식에서 코퍼스로..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 12. 태깅 작업 - 케라스를 이용한 태깅 작업

태깅 작업 각 단어가 어떤 유형에 속해있는지를 알아내는 태깅 작업 단어 태깅 작업의 대표적인 두 가지로는 각 단어의 유형이 사람, 장소, 단체 등 어떤 유형인지 알아내는 개체명 인식과 각 단어의 품사가 명사, 동사, 형용사 인지를 알아내는 품사 태깅이 존재 개체명 인식기와 품사 태거는 RNN의 다 대 다 작업이면서 앞, 뒤 시점의 입력을 모두 참고하는 양방향 RNN을 사용함 훈련 데이터에 대한 이해 태깅 작업은 텍스트 분류 작업과 동일하게 지도 학습에 속함 태깅을 해야하는 단어 데이터를 X, 레이블에 해당하는 태깅 정보 데이터를 y라고 할 때, X와 y 데이터의 쌍은 병렬 구조를 가지게 되며 각 데이터의 길이는 같게 됨 예1) X_train[3]의 'The'와 y_train[3]의 'O'는 하나의 쌍 예..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 11. NLP를 위한 합성곱 신경망 - 문자 임베딩

문자 임베딩 문자 레벨 표현 벡터는 어떤 단어이든 기본적으로 문자 레벨로 쪼개지므로 기존 워드 임베딩의 접근에서 OOV라고 하더라고 벡터를 얻을 수 있음 예) 'mis-' + 'understimate' 두 단어를 합쳤을 때 실존하는 단어가 아님에도 단어의 뜻을 '잘못 판단하는-' + '과소평가하다' = '잘못 과소평가하다'라고 추측 문자 임베딩은 사람의 이해 능력을 흉내내는 알고리즘으로 CNN과 RNN을 이용한 두 가지 방법을 제시 1D CNN을 이용한 문자 임베딩 1D CNN은 전체 시퀀스 입력 안의 더 작은 시퀀스(단어가 문자 단위로 쪼개진 입력)에 집중하여 정보를 얻어내는 동작을 하는 알고리즘 1D CNN을 문자 임베딩에 사용할 경우 문자의 N-gram으로부터 정보를 얻어내게 됨 예) 단어 'hav..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 11. NLP를 위한 합성곱 신경망 - 사전 훈련된 워드 임베딩을 이용한 의도 분류

의도 분류 개체명 인식과 더불어 챗봇의 중요 모듈로서 사용되는 텍스트 분류 중 하나 데이터 로드와 전처리 1) 의도 데이터를 다운로드하여 데이터프레임에 로드 2) 훈련 데이터를 로드한 데이터프레임을 출력 3) 테스트 데이터를 로드한 데이터프레임을 출력 4) 훈련 데이터, 테스트 데이터, 레이블을 리스트로 저장하고 샘플 수를 출력 5) 훈련 데이터의 상위 5개 샘플과 레이블을 출력 이 문장의 의도는 이 곡을 플레이리스트에 추가해달라는 의도 6) 어떤 종류의 범주가 있는지 인덱스를 2000씩 +하면서 출력 데이터가 일정한 순서로 배치되어 있음을 알 수 있음 7) 훈련 데이터에 존재하는 레이블의 분포를 그래프로 시각화 훈련 데이터에는 6개의 카테고리가 존재하며 각각의 데이터는 약 2000개씩 존재함 8) 6개..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 11. NLP를 위한 합성곱 신경망 - 자연어 처리를 위한 1D CNN

2D 합성곱 이미지 처리에서 합성곱 연산을 2D 합성곱 연산이라고 부름 1D 합성곱 자연어 처리에서 사용되는 합성곱 연산을 1D 합성곱 연산이라고 부름 1D 합성곱 연산은 LSTM과 마찬가지로 각 단어가 벡터로 변환된 문자 행렬로 입력을 받게 됨 1D 합성곱 연산에서 커널의 너비는 문장 행렬에서의 임베딩 벡터의 차원과 동일하게 설정되므로 !D 합성곱 연산에서는 커널의 높이만으로 해당 커널의 크기라고 간주하게 됨 만약 커널의 크기가 2인 경우 높이가 2, 너비가 임베딩 벡터의 차원인 커널을 사용하게 됨 커널의 너비가 임베딩 벡터의 차원이기 때문에 커널이 2D 합성곱 연산 때와는 달리 너비 방향으로는 더이상 움직일 수 없음 그래서 1D 합성곱 연산에서는 커널이 문장 행렬의 높이 방향으로만 움직이게 됨 그리하..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 11. NLP를 위한 합성곱 신경망 - 합성곱 신경망

합성곱 신경망 합성곱 신경망은 이미지 처리에 탁월한 성능을 보이는 신경망 합성곱 신경망은 주로 이미지 처리(비전 분야)에서 사용되는 알고리즘이지만 이를 응용해서 자연어 처리에 사용하기 위한 시도들이 존재 합성곱 신경망의 대두 이미지 처리를 하기 위해서 다층 퍼셉트론을 사용할 수 있지만 한계가 있었음 예) 같은 알파벳 Y이지만 정자로 쓴 손글씨와 휘갈겨 쓴 손글씨의 경우 기계가 보기에는 각 픽셀마다 가진 값이 대부분 상이하므로 사실상 다른 값을 가진 입력으로 보게 됨 그런데 이미지라는 것은 같은 대상이라도 다양한 변형이 존재하므로 픽셀만 값이 달려져도 민감하게 예측에 영향을 받는 다층 퍼셉트론에 한계가 발생 또한 이미지를 1차원 텐서인 벡터로 변환하고 다층 퍼셉트론의 입력층으로 사용할 경우 원래 어떤 이미..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 양방향 LSTM으로 한국어 스팀 리뷰 감성 분류하기

BiLSTM으로 텍스트 분류에 사용하기 양방향 LSTM은 두 개의 독립적인 LSTM 아키텍처를 함께 사용하는 구조로 뒤의 문맥까지 고려하기 때문에 문장을 오른쪽에서 반대로 읽는 역방향 LSTM 셀을 함께 사용하므로 두 가지 정보를 고려하여 출력층에서 예측 시에 두 가지 정보를 모두 사용함 양방향 LSTM을 다 대 일 문제인 텍스트 분류 문제에서 사용할 경우 순방향 LSTM은 마지막 시점의 은닉 상태를 출력층으로 보내서 텍스트 분류를 수행하는데 역방향 LSTM도 순방향과 같은 시점의 은닉 상태를 사용하게 될 경우 x4만 보게 되므로 유용한 정보를 갖지 못함 그러므로 return_seqeunces=Fasle를 택하여 순방향 LSTM의 경우에는 마지막 시점의 은닉 상태를 반환하고, 역방향 LSTM의 경우 첫 ..

ML/딥 러닝을 이용한 자연어 처리

[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - GRU로 네이버 쇼핑 리뷰 감성 분류하기

Colab에 Mecab 설치 1) 형태소 분석기 Mecab 사용을 위해 설치 네이버 쇼핑 리뷰 데이터에 대한 이해와 전처리 데이터 로드하기 1) 네이버 쇼핑 리뷰 전체 데이터를 다운로드 2) 해당 데이터에는 열제목이 별도로 없으므로 임의로 두 개이 열제목인 'ratings'와 'reviews'를 추가 3) 상위 5개의 샘플 출력 훈련 데이터와 테스트 데이터 분리하기 1) 현재 데이터는 레이블을 갖고 있지 않으므로 평점이 4, 5인 리뷰에는 레이블 1, 평점이 1, 2인 리뷰에는 레이블 0을 부여 2) 중복을 제외한 샘플의 수를 카운트하고 중복인 샘플들을 제거 3) NULL 값 유무 확인 4) 훈련 데이터와 테스트 데이터를 3:1 비율로 분리 레이블의 분포 확인 1) 훈련 데이터의 레이블 값의 분포를 확인..

김깅긍
'ML/딥 러닝을 이용한 자연어 처리' 카테고리의 글 목록