티스토리 뷰

NLP /이것저것

Subword encoder - tensorflow

제이gnoej 2019. 9. 2. 05:17

Coursera - NLP in tensorflow 수업 takeaway 

 

예를 들어서 classifier 를 만든다고 할 때, 그냥 Dense net 을 이용해서 만든다는 것은 결국 단어 순서 상관없이 bag of words 로 classifier 를 만드는 거다. 물론 이것도 충분히 잘 작동할 수 있다 - imdb 로 영화 리뷰 분류하는 것등.

 

그런데 tensorflow 기능 중에는 subword encoder 라고, 단어를 n-gram (n 이 fixed size 는 아님) 으로 tokenize 해주는 기능이 있다. 장점은 OOV 가 없다는 것이다 (새로운 단어도 다 더 작은 단위로 쪼개서 encode 하니까). 반면에, 이렇게 tokenize 된 text 를 보통처럼 embedding, pooling layer, dense layer 를 사용해서 분류하면 상당히 낮은 정확도를 얻게 된다. 왜냐고? tensorflow -> ten / sor /flow 처럼 tokenize 된다고 하자. 각각의 subword 에는 의미가 없는데 (있을 수도 있지만) sor - flow - tensor  는 ten - sor - flow  랑 전혀 다른 단어가 되버리는 거다. 즉, 순서를 고려하지 않고 bag of words 방식을 사용하는 것은 subword encoding 방식에는 적절치 않다. 그래서 recurrent 등 sequential data 의 순서를 반영하는 뉴럴 넷을 써야 한다. 

'NLP > 이것저것' 카테고리의 다른 글

Word embedding vs Contextual embedding  (0) 2021.05.04
Cross entropy loss (feat. negative log likelihood)  (3) 2019.10.21
Subclassing code example - tf.keras  (0) 2019.08.28
BERT  (0) 2019.08.20
음성 처리 (Audio processing)  (0) 2019.07.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함