<목차>
1. NLP 분야
2. NLP 트렌드
3. Bag-of-Words
4. NaiveBayes Classifier
NLP에는 어떤 분야가 있을까?
NLP 관련 학문 분야는 NLP, Text mining, Information retrieval 세 가지로 나눌 수 있다.
NLP
(major conferences: ACL, EMNLP, NAACL)
low-level parsing, word and phrase level, sentence level, multi-sentence and paragraph level 네 가지의 task로 나눌 수 있다.
low-level parsing | - 문장을 단어로 쪼개는 tokenization - 단어로부터 어간을 추출하는 stemming (ex. 먹었다, 먹는다, 먹는중 등 형태는 다르나 의미가 같음을 이해하도록 함) |
word and phrase level | - 고유명사를 찾는 Named entity recognition(NER) - 품사와 성분을 맞추는 part-of-speech(POS) tagging - noun-phrase chunking, dependency parsing, coreference resolution |
sentence level | - 긍정과 부정을 구분하는 sentiment analysis(감정 분석) - 문장을 다른 언어로 번역해주는 machine translation(기계어 번역) |
multi-sentence and paragraph level | - 두 문장간의 모순관계를 예측하는 Entailment prediction - 질문에 답을 구하는 question answering(질의응답) - 챗봇(dialog systems), 문서 요약(summarization) |
Text Mining
(major conferences: KDD, The WebConf (formerly, WWW), WSDM, CIKM, ICWSM)
- 빅데이터와 관련 있다. 텍스트와 문서로부터 유용한 정보를 추출해낸다.
- Document clustering(topic modeling): 서로 다른 키워드이지만 비슷한 키워드들을 그룹핑
- 특히 텍스트 마이닝은 SNS 데이터를 바탕으로 유의미한 내용을 얻어내는 등 사회 과학 분야에서 유용하게 사용된다.
Information retrieval (정보 검색)
- 포털 사이트에서 우리가 원하는 키워드를 검색했을 때, 이에 해당되는 내용의 사이트만 알려주는 것이 아니라, 가장 근접한 답을 찾아준다. 기술이 충분히 고도화돼서 발전이 더디다.
- 유튜브의 영상을 봤을 때 비슷한 영상을 검색없이 이어서 볼 수 있도록 돕는 추천시스템도 포함된다.
NLP의 트렌드
- 텍스트 데이터는 순서를 포함하는 sequence 데이터이기 때문에 이를 컴퓨터가 이해할 수 있도록 단어를 벡터로 변경해주어야 한다. 이 과정을 "word embedding"이라고 하며 이 과정에서 Word2Vec나 GloVe를 활용한다.
- 기계어 번역에서, 딥러닝이 나오기 이전에는 언어 지식을 활용한 rule 기반 번역을 진행해왔다. 하지만 언어 지식 없이도 한국어- 영어 번역 쌍을 모아서 단지 sequence를 잘 처리하는 것만으로도 기계 번역 성능이 월등히 향상됐다.
- 순서 정보를 학습하기 위해서는 주로 RNN model(LSTM, GRU)를 활용해왔다. 하지만 Attention 구조의 Transformer가 등장하면서 현재는 Transformer을 주로 사용하고 있다. Transformer은 자연어처리 뿐만 아니라 영상 처리, 시계열 예측, 신약 개발에도 좋은 성능을 보인다.
- 이전에는 각각의 Task에 대해 다른 customized model이 존재했다. 하지만 요즘은 Transformer의 핵심 모듈인 self attention을 단순히 계속 쌓아나가며 모델의 크기를 키우고, 대규모 텍스트 데이터를 통해 자가지도학습(self-supervised training)을 진행한다. 이는 레이블이 불필요한 범용적 task로, 이렇게 사전 학습된 모델을 구조의 큰 변화 없이 다른 task에 적용해도(transfer learning) 좋은 성능을 보인다. Bert, GPT3 모델이 자가지도학습 모델에 해당한다.
- 자가지도학습을 통한 pretrained 모델은 GPU 자원이 많이 필요하다는 어려움이 있다.
Text를 숫자로 바꾸기 위해서는 두 가지 문제를 해결해야 한다.
1. text를 어떤 단위(token)으로 나눌 것인가? => Tokenization
2. token을 어떤 숫자로 바꿀 것인가? => Embedding
Bag of Words
딥러닝 기술이 적용되기 이전에 활용하던 단어 및 문서를 숫자로 바꾸는 방법
step 1 | sentence에 포함된 단어들을 포함한 vocabulary를 생성한다. 이때, 단어들은 unique 해야 함. ex) “John really really loves this movie“, “Jane really likes this song” 이라는 문장으로 vocabulary를 만든다 => 완성된 vocabulary는 {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”} |
step 2 | vocabulary를 one-hot vector로 변경한다. 이때, one-hot vector의 차원은 vocabulary의 개수와 동일하게 설정한다. 8-dimension을 가지는 one-hot vector를 만들게 됩니다. ![]() 이때, 어떠한 단어 2개를 고르던지 유클리디안 거리는 루트2 로 동일하며, 코사인 유사도(cosine similarity)도 0으로 동일하다. 즉, 단어의 의미와 상관없이 동일한 관계를 가진다. |
step3 | 하나의 문장은 one-hot vector의 합으로 표현 가능하다. “John really really loves this movie“ => John + really + really + loves + this + movie: [1 2 1 1 1 0 0 0] “Jane really likes this song” => Jane + really + likes + this + song: [0 1 0 1 0 1 1 1] |
NaiveBayes Classifier for Document Classification
NaiveBayes Classifier는 bag-of-words vector로 나타낸 문서를 정해진 카테고리에 분류하는 대표적인 방법이다.
d는 document, c는 class라고 할 때
1) MAP는 최대 사후 확률로 가장 비슷한 클래스를 표현하는 것을 의미한다. 즉, 확률이 가장 높은 클래스 c를 출력한다.
2) 위 식에 bayes rule을 적용하면 다음과 같은데 P(d)는 상수이기 때문에 무시할 수 있다.
그리고 d를 시퀀스 단어인 w로 표현해보자.
p(d|c)는 특정 카테고리 c가 고정일 때, 문서 d가 나타날 확률을 의미한다.
예제) 4개의 train 문장으로 학습해서 test 문장을 예측하자
Document(d) | Document(words, w) | class(c) | |
train | 1 | Image recognition uses convolutional neural networks | CV |
2 | Transformer can be used for image classification task | CV | |
3 | Language modeling uses transformer | NLP | |
4 | Document classification task is language task | NLP | |
test | 5 | Classification task uses transformer | ? |
Class로 CV, NLP가 나올 확률은 각 각 1/2이다.
그리고 한 class가 고정됐을 때 각 단어가 나타날 확률을 구해보자.
각 단어(Wi)에 대한 조건부 확률은 아래 표와 같이 구할 수 있다. (해당 class의 모든 단어들에서 Wi는 몇 번 등장했는 가)
document 5가 CV일 확률, NLP인 확률은 다음과 같다. NLP 값이 더 크니까 NLP로 예측한다.
위 과정에서 중요한 것은 만약 단어가 포함되어 있지 않으면 0의 확률을 갖게 된다. 이렇게 되었을 때, 다른 단어가 아무리 연관성이 높아도 해당 클래스로 분류할 수 없다. 따라서 이를 막기 위해 Regularization(상수를 더해주는 방법)을 사용한다.
용어 정리:
Ground Truth란?
'우리가 정한 정답', '우리의 모델이 우리가 원하는 답으로 예측해주길 바라는 답
💡 Tokenization Method 정리
크게 character-based, word-based, subword-based tokenization이 있다.
subword 토큰화 기법 중 하나인 BPE의 코드를 작성하기도 했다.
1. character-based
단점: 많은 메모리 및 계산량 필요
2. word-based
단점: 한국어의 경우 띄어쓰기가 효율적이지 않음
3. subword-based : 의미있는 단위로 묶는다 <= 데이터가 토큰을 묶는다
'AI TECH' 카테고리의 다른 글
Word Embedding: Word2Vec, GloVe, TF-IDF (0) | 2022.10.11 |
---|---|
[실습] 전처리 Corpus cleaning (0) | 2022.10.10 |
Generative Model (2) | 2022.10.07 |
Sequential Models - Transformer (0) | 2022.10.06 |
Sequential Models - RNN/LSTM/GRU (0) | 2022.10.06 |