일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Font Generation
- multimodal
- 모션매칭
- 폰트생성
- WinAPI
- inductive bias
- Diffusion
- 딥러닝
- userwidget
- Generative Model
- cv
- 디퓨전모델
- Unreal Engine
- 생성모델
- ue5.4
- GAN
- deep learning
- ddpm
- dl
- NLP
- motion matching
- Few-shot generation
- 언리얼엔진
- CNN
- BERT
- Stat110
- WBP
- RNN
- UE5
- animation retargeting
- Today
- Total
Deeper Learning
Text similarity Model (CNN, MaLSTM) 본문
텍스트 유사도 측정
자연어 처리에서 텍스트 유사도 문제는 Document의 유사도를 측정할 수 있는 모델을 만들어 해결이 가능하다.
두 질문이 유사한 질문일 경우 1, 아닐 경우 0으로 labeling 된 Quora Question Pairs 데이터셋을 CNN, MaLSTM 2가지 모델을 사용하여 텍스트 유사도를 측정해보겠다.
Preprocessing
위와 같이 train 데이터는 2개의 질문인 question1, question2와 label인 is_duplicate로 이루어져 있다.
Corpus의 특성상 ?와 : 같은 특수문자가 많아 정규표현식을 사용하여 영문을 제외한 특수문자나 숫자를 공백으로 대체한다.
DataFrame에서 question1과 question2를 각각 list로 추출하여 할당하고 Tokenize를 진행한다.
TF2의 keras의 Tokenizer를 question1, question2를 이어 붙인 list에 fitting 시켜 생성된 word index를 바탕으로 sequence로 변환한다.
Sequences의 길이가 모두 다르기 때문에 padding이 필요하다.
이제 Embedding을 위한 Input이 완성되었다.
CNN
CNN은 이미지에 주로 사용되지만, Area의 특징을 추출해내는 특성은 Sequence 데이터에서도 유용하다. 이를 활용하여 CNN을 사용하여 텍스트 유사도를 구할 수 있다.
Embedding layer를 통과한 2개의 Document vector를 위와 같이 여러 크기의 kernel을 사용한 1D-Convolutional Layer의 input으로 사용한다.
Max pooling을 사용하여 각 filter의 output에서 가장 큰 값만을 남긴다.
이를 FC layer를 사용하여 다른 차원의 벡터로 매핑한다.
임베딩이 완료된 2개의 Document은 Conv layer를 사용한 SentenceEmbedding layer에 의해 각각 1d 형태의 output으로 Encoding 된다.
이제 이 둘을 tf.concat을 사용하여 concatenate 시킨 후 이를 FC layer를 사용하여 마지막으로 activation으로 sigmoid를 사용하여 0 ~ 1의 실수 값이 output이 되도록 한다.
Binary Classification과 같은 형태의 문제로 threshold를 설정하여 1과 0으로 predict값을 결정한다.
각 단계에서 tensor shape의 변화를 보면 이해가 더욱 쉽다.
MaLSTM
MaLSTM 이란 Manhattan distance + Long Short Term Memory Networks로 LSTM의 마지막 시점의 2개의 Document의 output 사이의 Manhattan distance를 사용하여 유사도를 판별한다.
위와 같이 2개의 문장의 각 token을 Embedding 한 x를 input으로 하는 LSTM layer의 마지막 unit의 state의 Manhattan거리를 측정한다.
y = exp(-distance)를 적용하는 이유는 Manhattan distance는 0 이상의 값으로 이를 0 ~ 1의 값으로 만들어야 하기 때문이다.
Manhattan distance가 0일 때 예측값 y는 1, distance가 커질수록 y는 점점 0에 가까워진다.
논문에서는 단일 LSTM을 사용하거나 2개의 input에 대해 다른 LSTM을 사용하는 2가지 방법을 모두 제시하고 있다. 위는 단일 LSTM을 사용하여 구현한 예시이다.
loss는 Binary Cross Entropy를 사용한다.
XGBOOST, cosine similiarty 등등 여러 가지 방법으로 Document 끼리의 유사도를 측정할 수 있다.
Reference
[1] Zheng, Tao & Gao, Yimei & Wang, Fei & Fan, Chenhao & Fu, Xingzhi & Li, Mei & Zhang, Ya & Zhang, Shaodian &Ma, Handong. (2019). Detection of medical text semantic similarity based on convolutional neural network. BMC Medical Informatics and Decision Making. 19. 10.1186/s12911-019-0880-2.
[2] Zhu et al. (2018). Dependency-based Siamese long short-term memory network for learning sentence representations
[3] 텐서플로 2와 머신러닝으로 시작하는 자연어 처리 www.yes24.com/Product/Goods/92716461
'AI > Deep Learning' 카테고리의 다른 글
Gradient Descent (0) | 2021.02.10 |
---|---|
Attention Mechanism (0) | 2021.01.29 |
Deep Convolutional Generative Adversarial Networks (DCGAN) (0) | 2020.12.28 |
BLEU (Bilingual Evaluation Understudy Score) (0) | 2020.12.24 |
Beam Search (0) | 2020.12.24 |