본문 바로가기

AI

(28)
[NLP] Efficient Estimation of Word Representations in Vector Space(Word2Vec) 리뷰 Abstract 이 논문에서는 아주 큰 데이터셋에 있는 단어의 연속적인 벡터 표현을 계산하는 새로운 모델 구조를 제안합니다. 이는 이 전의 모델에 비해 훨씬 적은 계산 양에도 불구하고 정확도에서 큰 성능 향상이 있었습니다. 나아가 syntactic, semantic 단어 유사도 측정 부분에서 state-of-the-art 성능을 달성했습니다. Introduction 이전의 많은 NLP 시스템은 단어를 아주 작은 단위(atomic units)로써 다뤘습니다. 여기에 단어 사이의 유사성에 관한 개념은 없었습니다. 이러한 방식에는 단순하고, 강건하다는 장점과 단순한 모델이 많은 양의 데이터로 학습을 진행했을 때가 복잡한 모델이 적은 데이터로 학습했을 때 보다 성능이 좋은 것이 관찰됐습니다. 하지만, 이런 단순..
[NLP] (NNLM)A Nueral Probabilistic Language Model 리뷰 Abstract 통계학적 언어 모델을 만들게 된 목적은 언어에서 word sequences의 결합 확률 함수를 학습하기 위해서입니다. 하지만 이는 Curse Of Dimensionality(차원의 저주)라는 본질적인 문제가 있습니다. 이에 논문에서는 단어의 분산 표현을 학습함으로써 문제를 해결하고자 합니다. Introduction 언어 모델이나 다른 학습이 어려운 근본적인 문제는 차원의 저주 때문입니다. 특히 많은 discrete random variables사이의 분산을 합친 모델을 만들려고 할 때 문제가 발생합니다. 예를 들어, 우리가 10개의 연속적인 단어의 분산을 합친 모델을 단어장 크기가 100,000인 $V$를 이용해서 만들려고 한다고 가정하겠습니다. 이러한 경우 free parameters는..
[NLP] Neural Machine Translation of Rare Words with Subword Units(BPE) 리뷰 https://arxiv.org/pdf/1508.07909.pdf Abstract 이전의 Neural machine translation(NMT)는 고정된 단어장에서 작동했지만, 번역은 open-vocabulary problem입니다. 이는 OOV(Out of Vocabulary) 문제에 취약할 수밖에 없습니다. 이 논문에서는 희귀하거나 모르는 단어를 subword units의 연결로 encoding 함으로써 open-vocabulary 번역을 가능하게 하는 방법을 소개합니다. Introduction 최근의 Neural machine translation은 인상적인 결과를 보여주지만 희귀 단어에 대한 번역은 해결되지 않은 문제입니다. open vocabulary problem, 특히 교착어나 합성어와 같..
[NLP] 임베딩 편향성 이번에는 워드 임베딩에 숨어 있는 편향성을 측정하는 대표적인 방법론인 Word Embedding Association Test(WEAT)라는 기법에 대해 알아보고, 이를 활용해 직접 학습시킨 Word2Vec 임베딩 내의 편향성을 측정해 보면서 이 방법론이 우리의 편향성을 잘 반영하는지도 알아보겠습니다. 위 그림은 'Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings'라는 논문에 포함된 것입니다. 이 논문의 저자는 학습된 Word Embedding을 2차원으로 차원 축소하여 시각화했을 때, 젠더 중립적인 단어임에도 불구하고 Programmer, Doctor, Engineer 등의 단어는 남성 대명사 He에 가깝게..
[NLP] 워드 임베딩 자연어를 기계가 처리할 수 있도록 전처리 과정에서 텍스트를 벡터로 변환하는 과정을 벡터화(Vectorization)라고 합니다. 지금까지 벡터화 방법으로 DTM, TF-IDF를 배웠습니다. 그리고 이와 비슷하지만 다른 원-핫 인코딩(one-hot encoding)이라는 방법이 있습니다. DTM(Document-Term Matrix) : 문서에서 단어의 등장 빈도만을 고려해 벡터화하는 방법 TF-IDF(문서-역문서 빈도) : 불용어 같이 거의 모든 문서에서 등장하지만 딱히 의미가 있지 않은 단어가 있기 때문에 단어마다 중요 가중치를 다르게 주는 방법 원-핫 인코딩(one-hot encoding) : 가지고 있는 단어장을 기준으로 해당하는 단어의 인덱스에만 1이고 나머지는 0인 벡터 간단하게 원-핫 인코딩에..
[NLP] 텍스트 카테고리 분류 로이터 뉴스데이터에 대해 카테고리 분류를 진행하겠습니다. 이는 텐서플로우 데이터셋에서 제공하고 있는 데이터로 아주 쉽게 다운로드가 가능합니다. 필요한 모듈을 임포트하고 데이터를 다운로드하여 오겠습니다. from tensorflow.keras.datasets import reuters import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as pd (x_train, y_train), (x_test, y_test) = reuters.load_data(num_words=10000, test_split=0.2) tensorflow.keras.datasets.reuters.load_data에는 다양한 파라미터가 ..
[NLP] 텍스트 벡터화 단어 빈도를 이용한 벡터화 (1) Bag of Words (2) Bag of Words 구현해보기 (3) DTM과 코사인 유사도 (4) DTM의 구현과 한계점 (5) TF-IDF (6) TF-IDF 구현하기 LSA와 LDA (1) LSA (2) LSA 실습 (3) LDA (4) LDA 실습 텍스트 분포를 이용한 비지도 학습 토크나이저 (1) 형태소 분석기와 단어 미등록 문제 (2) soynlp 1. 단어 빈도를 이용한 벡터화 (1) Bag of Words 자연어 처리에서 전처리 과정에 텍스트를 벡터로 변환하는 벡터화(Vetorization)라는 과정이 있습니다. 벡터화 방법으로는 크게 통계와 머신 러닝을 활용한 방법, 그리고 인공 신경망을 활용하는 방법으로 나눠볼 수 있습니다. 그중에서 Bag of Wo..
[NLP] 단어사전 만들기 이 전 글에서 자연어 전처리 방법 중 토큰화에 대해 알아보고 관련된 모델을 공부했습니다. 이번에는 여러 한국어 형태소 분석기를 직접 사용해보고 그 결과를 비교해보겠습니다. 먼저 실습을 진행할 Google Colab의 환경 설정을 해줍니다. # Mecab 설치 !apt-get update !apt-get install g++ openjdk-8-jdk !pip install konlpy JPype1-py3 !bash length: min_len = length if max_len < length: max_len = length sum_len += length print('문장의 최단 길이 : ', min_len) print('문장의 최장 길이 : ', max_len) print('문장의 평균 길이 : ', ..