Data/자연어처리 6

[Pytorch] 임베딩 (2) / GloVe임베딩 + CNN 을 활용한 뉴스 카테고리 분류기 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. 이전 포스팅에선 임베딩의 개념에 대해서 정리해보았다. 이번 포스팅에선 사전 훈련된 임베딩 GloVe와 CNN모델을 활용하여 뉴스 카테고리를 분류하는 모델을 구축하는 코드를 리뷰해보고자 한다. 코드리뷰는 참고한 책에서 추가 보충 설명을 달아놓고 이해를 높이기 위함이므로 전체 코드를 보고 싶다면 코드 원본 출처에서 보도록 하자. ▶ 분석 개요 분석에 사용할 데이터는 AG 뉴스 데이터 셋으로 2005년에 수집한 뉴스 기사 모음이다. 해당 분석에서는 네가지 범주로 균등하게 분할된 뉴스 기사 12만개에서 뉴스 제목을 대상으로 카테고리를 예측하는 분류모델을 만들었다. ▶ 분석 과정 분석과정은 다음 그림과 같다. - 우선 텍스트를 정수로 매핑하기 위해 voca..

임베딩 (1) / 임베딩 개념

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. 참고 강의- 단어 임베딩 ▶ 임베딩(embedding)의 정의와 필요성 컴퓨터가 텍스트를 인식 처리할 수 있도록 단어나 문장을 벡터로 바꾼 것 혹은 그 과정을 임베딩이라고 한다. 임베딩 방식에는 전통적으로 사용해오던 원핫벡터, 카운트 기반의 TF-idf방식 등이 있다. 카운트 기반의 방식은 중요 내용이나 의미가 벡터의 여러차원에 표현되기 때문에 분산적 표현이라고도 부른다. 분산표현은 문서에 존재하는 단어들 보다 낮은 차원의 밀집벡터로 나타내지만 그럼에도 여러 차원에 비슷한 정보를 중복해 인코딩한 벡터를 만들기 때문에 통계적 장점을 공유하지 못한다. 또한 카운트 기반 표현은 차원이 수백만개로 늘어날 경우 상당히 고차원의 입력값 생성될 수 있는데, 이..

[Pytorch] CNN을 활용한 성씨 데이터 분류기 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 코드 출처 본 포스팅은 파이토치로 배우는 자연어 처리 책을 공부하며 따라 작성해본 코드 중에서 좀 더 자세한 설명이 필요하거나 코드에 대해 이해한 부분을 정리해보고자 작성하였다. ▶ 분석 개요 이번 포스팅에서 다뤄볼 데이터셋은 18개 국적의 성씨 10000개를 모은 성씨 데이터 셋으로 데이터 불균형 등의 문제등이 해결되어 이미 전처리가 완료된 데이터를 사용한다. 모델은 다층 퍼셉트론과 CNN을 사용하는데 본 포스팅에선 CNN을 사용한 예제를 풀어보고자 한다. 모델링의 대략적인 진행 과정은 다음과 같다. 토큰들을 정수로 매핑하기 위한 어휘사전을 구축하고 정수로 매핑된 토큰들을 원핫벡터 행렬로 수치화한다. CNN 모델을 구축한 후 학습 및 검증과정을..

자연어 처리를 위한 피드포워드 신경망(2)/ 합성곱 신경망, 파이토치 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의 ▶ 합성곱 신경망이란 합성곱 신경망은 공간상의 부분 구조를 감지하는 데 적합하기 때문에 이미지 처리에서 많이 사용되는 신경망이다. CNN은 소수의 가중치를 사용해 입력 데이터 텐서를 스캔하여 구조를 인식한다. 파이토치에서는 1,2,3 차원의 합성곱이 가능한데 각 합성곱이 적합한 분야는 다음과 같다. - Conv 1d: 1차원 합성곱 연산으로 각 타임 스텝에 특성벡터가 존재하는 시계열에 잘 맞고 자연어처리에서 합성곱 연산으로 대체로 1차원 합성곱으로 이뤄진다. - Conv2d: 2차원 합성곱으로 데이터의 두방향을 따라 시공간 패턴을 감지하므로 이미지처리 분야에서 많이 사용된다. - Conv3d: 3차원 합성곱으로 데이터의 세 방향을 따라..

자연어 처리를 위한 피드 포워드 신경망(1)/ 다층 퍼셉트론, 파이토치 구현

델립라오, 브라이언 맥머핸의 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의1, 참고 강의2 ▶ 다층 퍼셉트론이란? 이전 포스팅에 올렸던 퍼셉트론을 여러 층으로 쌓아올린 구조를 말한다. XOR 논리게이트와 같이 하나의 직선으로 데이터 포인트를 나눌 수 없는 경우 여러 개의 퍼셉트론을 사용해 논리게이트를 구현할 수 있었듯이 복잡한 패턴의 데이터를 학습하기 위해선 여러 개의 퍼셉트론을 쌓아 학습하는 과정이 필요하다. ▶ 다층 퍼셉트론의 구조 단층 퍼셉트론이 입력층 하나와 출력층 하나로 구성됐다면 다층퍼셉트론은 입력층과 출력층 사이에 은닉층이 추가된다. 은닉층은 경우에 따라 여러 개의 은닉층이 쌓일 수 도 있다. MLP의 학습과정은 다음과 같다. 1) 입력벡터가 들어오면 첫번째 Linea..

텍스트를 수치화시키는 방식 4가지

텍스트를 머신러닝 알고리즘에 사용하기 위해선 수치로 변환하는 과정이 필요하다. 수치로 나타내는 방법은 여러가지가 있는데 해당 포스팅에선 4가지 표현을 소개하고자 한다. ▶ 원-핫 표현 원핫 표현은 문장을 단어 단위로 나눈 토큰들을 어휘 사전으로 등록하고, 문장에 등장하는 단어는 1로 문장에 등장하지 않는 단어는 0으로 설정하는 방식이다. 다음과 같은 corpus가 있다고 해보자. 해당 코퍼스에서 만들어지는 어휘사전의 개수는 time, flies, like, an, a, arrow, banana, fruite로 8개이다. 여기서 'Time flies like' 코퍼스를 원핫벡터로 표현하면 다음과 같다. time flies like an a arrow banana fruite 1 0 0 0 0 0 0 0 0..