자연어처리(Natural Language Processing)이란 인공지능의 한 분야로, 컴퓨터가 사람의 언어인 자연어를 이해할 수 있게 처리하는 것이다. 자연어처리 분석단계는 크게 형태소분석 → 구문 분석 → 의미 분석 → 담화 분석의 4단계 프로세스로 정의할 수 있
Natural Language Processing (NLP)는 컴퓨터가 인간의 언어를 이해하고 처리할 수 있도록 하는 기술을 연구하는 학문이다. AI의 한 분야로 텍스트 및 음성 데이터에서 의미를 추출하고, 분석,이해,생성하는 다양한 방향으로 개발한다. NLP의 최종적
Subword Tokenizer 기계가 이해하지 못하는 단어는 OOV(Out of Vocabulary), UNK(Unknown Token)라고 표현한다. 어떤 NLP task를 수행하더라도, 입력된 단어에 대해 기계가 이해하지 못하면 제대로 된 성능이 나올 수 없다.
말뭉치에서 용도에 맞게 token을 분류하는 것을 토큰화라고 하고, 토큰화 작업 전,후로 정제 (cleaning) 및 정규화 (normalization) 을 진행한다. cleaning : 갖고 있는 corpus로부터 noise 데이터 제거 normalization :
정규화는 같은 의미를 갖는 다른 표기방법의 단어를 합치는 과정으로, 표제어 추출, 어간 추출 등의 방법이 있다. 정규화의 목적은 원본이 되는 corpus의 복잡성을 줄이는 일이다. 단어들의 빈도수를 기반으로 문제를 푸는 BoW(Bag of Words)표현을 사용하는 N
이전 포스트에서도 다룬 적 있는 개념이지만, 다시 설명하자면 tokenization은 딥러닝에 기반한 자연어 처리에 있어서 가장 첫번째로 수행하는 단계로 주어진 텍스트를 특정 단위로 쪼개는 과정을 의미한다.특정 단위에 따라서 다양한 단위의 tokenization이 있다
우리가 사용하는 언어를 이해할 수 있지만, 컴퓨터의 입장에서는 단어를 단어 그대로로 받아들일 수 없다. 따라서, 단어나 토큰을 컴퓨터가 이해할 수 있는 벡터로 표현하는 방법을 적용해야한다. 이를 word embedding이라고 한다. 대표적인 방법인 Word2Vec에
가변적인 길이의 sequence 데이터를 입력으로 받아 매 time step 마다 vector를 처리하는 모델$$ht=f\\theta(h\_{t-1},x_t)$$$h_t$: new hidden state$h\_{t-1}$: old hidden state$f\_\\the
위의 경우 "hello" 라는 학습 문자열을 문자 단위로 tokenization을 수행하고, 이를 집합으로 가지는 vocabulary를 h,e,l,o로 구축한다.각 글자의 다음 글자를 예측하는 것으로 모델을 학습시킨다.RNN 모델의 입력은 vocabulary의 size
RNN에서의 gradient vanishing, exploding 문제를 한번 수학적으로 파악해보자.먼저, 간단한 예시로 확인해보기 위해서 RNN에서 사용되는 weight matrix를 모두, scalar로 가정하고 접근해보았다.위와 같은 RNN에서 $x_3$까지의 i
wordpiece 토큰화는 subword토큰화로 BERT와 DistilBERT,Electra에 사용된 알고리즘이다. 기존의 BPE알고리즘은, 빈도기반으로 subword를 병합하는 과정을 거쳤다. 너무 단순한 병합 원리로 최적의 결과를 보장할 수 없다.wordpiece
python의 re module에서 지원하는 method에 대해 정리했다.match문자열의 처음부터 시작해서 작성한 pattern이 일치하는지 확인한다.c의 경우 문자열의 시작이 c가 아니기 때문에, None을 return한다.search처음부터 일치하지 않아도 되는
메타문자 또는 메타캐릭터는 정규 표현식엔진과 같은 컴퓨터 프로그램에 특별한 의미를 갖는 문자를 의미한다. 아래의 표로 정리할 수 있다.여기서 사용된 메타문자는 아래와 같다.\\w : 단어문자와 일치\\w+ : 단어문자와 일치하는 문자 1개 이상\\ : 이스케이프 문자로
tokenization 및 vocabulary 생성과정을 정규표현식과 함께 raw하게 직접 구현해보자. 또한, 영문 텍스트에서 Spacy를 활용한 stop word 제외 및 전처리와 한국어 텍스트에서 Konlpy를 활용한 형태소 기반 tokenization을 진행해보
Self-supervised learning & Transfer learning self-supervised learning이란, 데이터의 일부를 숨기고, 해당 부분을 예측하도록 학습하는 것을 의미한다. label이 지정되지 않은 샘플 데이터에서 학습을 진행하는 것이
자연어를 생성하는 모델은 입력문장 x에 대해 문장 y를 출력하는 모델이다. 이때 x와 y의 관계는 (한글로 된 글-영문 번역글)등이 존재한다. 학습이 완료된 이상적인 언어모델(LM)은 입력문장 x가 주어질 때, 다음으로 예측할 단어나 문장으로 확률이 가장 높은 y를 선
MRC(Machine Reading Comprehension)는 기계 독해라는 의미로, 문단(context)을 이해하고 질의(query)에 대한 답(answer)을 추론하는 task다. huggingface에 의하면, MRC는 답변의 생성과정에 의해 두 종류로 볼 수
위는 Extractive QA의 flow이다. Raw data에서 context와 question 토큰화 한 후 MRC Model에 입력한다. code로는 아래와 같이 작성한다.encoding값을 구하는 과정에서 context와 question을 동시에 인자로 넣어 t
passage retrieval이란 query에 맞는 passage를 찾는 것이다. NLP에서 Open-domain QA 분야는 대규모 문서 중 질문에 맞는 답을 찾는 task를 수행한다. 이때 model 2가지가 사용될 수 도 있다.위와 같이 passage를 찾는 m
Sparse Embedding의 한계 먼저, passage embedding은 우리가 흔히 아는 글, 구절을 벡터로 표현하는 것을 의미한다. 여기서, 두가지 대표적인 방법으로 표현이 가능한데, sparse embedding과 dense embedding이 있다. spa
Overview open-domain QA model(질의응답 모델) 프로젝트를 진행하며 모델의 성능을 높이는 과정에서, reader model의 성능을 높이기 위한 방법을 고려중이였다. 삼성 SDS에서 제안한 KorQuAD 성능 개선 방안에서 모델의 구조를 직접 수정