[NLP] 한국어 임베딩 1장 - 서론

2022. 9. 30. 16:50·공부정리/NLP
728x90
반응형

 

한국어 임베딩

자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지

이기창 저/NAVER Chatbot Model 감수
에이콘출판사
 2019년 09월 26일

1장 서론

1.1 임베딩이란

1.2 임베딩의 역할

1.3 임베딩 기법의 역사와 종류

 

 

1.1 임베딩이란

임베딩

  • 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열 혹은 일련의 과정을 벡터로 바꾼 결과
  • 단어나 문장을 각각 벡터로 변환해 벡터 공간으로 끼워 넣음
  •  

단어-문서 행렬[Term-Document-Matrix] 

  메밀꽃 필 무렵 운수 좋은 날 사랑 손님과 어머니 삼포 가는 길
기차 0 1 9 8
막걸리 1 2 3 5
선술집 2 8 0 3

위의 표에서 [운수 좋은 날]의 임베딩은 [ 1, 2, 8 ] 이다. [막걸리]라는 단어의 임베딩은 [ 1, 2 , 3, 5] 이다 

 

 

임베딩의 역할

  • 단어, 문장간 관련도 계산 (ex. Word2Vec)
    • 코사인 유사도
  • 의미적 / 문법적 정보 함축
    • 아들 - 딸 + 소녀 = 소년
  • 전이 학습

 

단어, 문장간 관련도 계산

Word2Vec으로 단어 임베딩하기

앞서 본 단어-문서 행렬은 가장 단순한 형태의 임베딩이고 실제로 많이 쓰이는 단어 임베딩은 Word2Vec 이라는 임베딩 기법이다. 예를 들어 한국어 위키 백과 등을 "은전한닢"으로 형태소 분석을 한 뒤 100차원으로 학습했을때 "희망"이라는 단어는 [ -0.00209, -0.03918, 0.02419 ..... 0.01715, -0.04975, 0.09300 ] 와 같은 벡터로 임베딩이 된다고 한다.

 

이러한 100차원의 벡터는 사람이 봤을때는 그 의미를 당연히 이해할 수 없다. 컴퓨터가 계산하기 좋도록 "희망"이라는 단어를 벡터로 바꾸어 놓았을 뿐이다. 단어가 벡터로 바뀌는 순간 벡터들 사이의 유사도 측정 기법의 일종인 코사인 유사도를 구할 수 있고 결국은 코사인 유사도를 기반을 단어의 유사도를 판단할 수 있다.

 

또한 100차원 벡터들이지만 t-SNE 차원 축소 기법을 이용하여 보기 좋은 2차원으로 시각화 할 수도 있다. 이 경우 관련성이 높은 단어들이 주변에 몰려 있음을 확인할 수 있다.

 

의미/문법 정보 함축

벡터들은 당연히 덧셈/뺄셈에 대해서 닫혀있다. 따라서 단어를 임베딩을 하면 사칙연산이 가능하게 되는데

 

이때 ["아들"의 임베딩 벡터 - "딸"의 임베딩 벡터 + "소녀"의 임베딩 벡터 의 결과 벡터]와 ["소년"의 임베딩 벡터]의 "코사인 유사도" 가 높다면 품질이 좋은 임베딩이라고 할 수 있다. 이러한 방법을 단어 유추 평가(word analogy test)라고 한다

 

전이학습(Transfer Learning)

전이학습이란, 임베딩을 다른 딥러닝 모델의 입력값으로 쓰는 기법을 말한다.  이때 단어 임베딩이 잘 되어 있을 수록 문서 분류 정확도나 학습 속도가 올라간다.

 

사람이 학습을 "무"에서 시작하지 않듯, 전이 학습 모델 또한 대규모 말뭉치를 이용해서 임베딩을 미리 만들어 놓는다. 이 임베딩에는 의미적, 문법적 정보 등이 녹아 있다. 이 임베딩을 입력값으로 쓰는 전이 학습 모델은 문서 분류를 잘 할 수 있게 된다.

출처: https://nobase2dev.tistory.com/21

 

 

728x90
반응형

'공부정리 > NLP' 카테고리의 다른 글

[NLP] 한국어 임베딩 2장 벡터가 어떻게 의미를 가지고 되는가  (0) 2022.10.07
[NLP] TF - IDF  (0) 2022.10.07
[NLP] 한국어 전처리 기법 모음  (0) 2022.09.29
[NLP] 노가다 없는 텍스트 분석을 위한 한국어 NLP  (0) 2022.09.29
[NLP] 캐글 영화 리뷰 분석 튜토리얼 3 - (1) K-means로 군집화(Clustering) 하고 학습, 예측하기 - 강의 정리  (0) 2022.08.29
'공부정리/NLP' 카테고리의 다른 글
  • [NLP] 한국어 임베딩 2장 벡터가 어떻게 의미를 가지고 되는가
  • [NLP] TF - IDF
  • [NLP] 한국어 전처리 기법 모음
  • [NLP] 노가다 없는 텍스트 분석을 위한 한국어 NLP
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (614)
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • coding test - python (301)
        • Programmers (166)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (5)
        • Programmers (4)
        • 백준 (1)
        • 기본기문제 (0)
      • 공부정리 (5)
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (2)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (0)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (6)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    programmers
    백준
    소수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
[NLP] 한국어 임베딩 1장 - 서론
상단으로

티스토리툴바