본문 바로가기
ML & DL/책 & 강의

[밑시딥2] CHAPTER 2 자연어와 단어의 분산

by 공부하는 무니 2023. 7. 5.
반응형

2.1 자연어 처리란

  • 자연어: 한국어와 영어 우리가 평소에 쓰는 (부드러운 언어)
  • 인공어: 프로그래밍 언어, 마크업 언어 (딱딱한 언어)
  • 자연어 처리: ‘자연어를 처리하는 분야’ = 우리의 말을 컴퓨터에게 이해시키기 위한 기술

2.1.1 단어의 의미

  • 단어는 의미를 가지는 말의 최소 단위이다. 
  • 따라서 자연어를 컴퓨터에게 이해시키는 단계는단어의 의미 이해시키는 것이다.
  • 가지 기법
    • 시소러스를 활용한 기법: 시소러스(유의어 사전) 이용
    • 통계 기반 기법: 통계 정보로부터 단어를 표현
    • 추론 기반 기법: 구체적으로는 word2vec (3)

 

2.2 시소러스

  • 이렇게 모든 단어에 대한 유의어 집합을 만든 다음, 단어들의 관계를 그래프로 표현하여 단어 사이의 연결을 정의한다.
  • 단어 네트워크 이용하여 컴퓨터에게 단어 사이의 관계를 가르칠 있다.
  • 예를 들면 검색 엔진에서 “car” 검색 결과에 “automobile” 검색 결과도 포함시켜주는 것이 있다.

2.2.1 WordNet

  • WordNet
    • https://wordnet.princeton.edu/
    • 자연어 처리에서 가장 유명한 시소러스
    • 프린스턴 대학교에서 1985년부터 구축하기 시작한 전통있는 시소러스
    • WordNet 사용해 단어 사이의 유사도도 구할 있다. 
      • 부록 B. WordNet 맛보기 참고

wordnet은 동의어 뿐 아니라 상, 하위어도 표현이 되고 있어서 아래와 같은 그래프도 만들 수 있다.

2.2.2 시소러스의 문제점

  • 시대 변화에 대응하기 어렵다: 신조어 같은 경우에는 계속 갱신해야 한다 
  • 사람을 쓰는 비용은 크다: 현존하는 영어 단어의 수는 1,000 개가 넘으며 단어 사이의 관계를 정의해야 한다. 참고로 WordNet 등록된 단어는 20 이상이라고 한다.
  • 단어의 미묘한 차이를 표현할 없다: 시소러스에는 뜻이 비슷한 단어들이 있는데, ‘빈티지’ ‘레트로 같이 의미가 같은데 용법이 다른 미묘한 차이를 표현할 없다.
  • -> 그래서 나온 방법이통계 기반 기법추론 기반 기법’!

2.3 통계 기반 기법

  • 말뭉치: 자연어 처리 연구나 애플리케이션을 염두에 두고 수집된 대량의 텍스트 데이터
  • 통계 기반 기법의 목표: 사람의 지식으로 가득찬 말뭉치에서 자동으로, 효율적으로 핵심을 추출하는

2.3.1 파이썬으로 말뭉치 전처리하기

2.3.2 단어의 분산 표현

  • 모든 색을 RGB 형태로 나타낼 있는 처럼, 단어도 벡터(ex. [0.21, -0.45, 0.83]) 표현할 있다.
  • 이를 단어의 분산 표현(distributional representation)이라고 한다.

2.3.3 분포 가설

  • 단어를 벡터로 표현하는 연구는 많이 이루어져 왔다. 
  • 연구들의 뿌리는단어의 의미는 주변 단어에 의해 형성된다 아이디어.
  • 이를 분포 가설(distributional hypothesis)이라고 한다.
  • 단어 자체에는 의미가 없고, 단어가 사용된 맥락이 의미를 형성한다는
  • I drink beer. We drink wine. -> beer wine 비슷한 의미가 있구나!
  • I guzzle beer. We guzzle wine -> drink guzzle 비슷한건가봐!
  • 맥락은 주변에 놓인 단어를 가리킨다.
  • 윈도우 크기: 주변 단어를 개나 포함할 지의 크기

2.3.4 동시발생 행렬

  • 분포 가설에 기초하여 단어를 벡터로 나타내는 가장 간단한 방법은 주변 단어를세어 보는 ’. 어떤 단어 주변에 어떤 단어가 번이나 등장하는지를 세어서 집계하는 방법
  • -> 통계 기반 기법

  • -> 이를 바탕으로 “you”라는 단어는 [0, 1, 0, 0, 0, 0, 0] 벡터로 표현할 있다.
  •  

2.3.5 벡터 간 유사도

  • 벡터 사이의 유사도를 측정하는 방법: 벡터의 내적, 유클리드 거리
  • 단어 벡터 사이의 유사도 측정: 코사인 유사도(cosine similarity)

  • 분자는 벡터 내적, 분모는 벡터의 L2 Norm -> 벡터를 정규화하고 내적했다!
  • 정규화 했으므로 크기는 -1 ~ 1. 분자인 내적은 가리키는 방향이 얼마나 같은지 이므로, 완전히 같다면 1, 완전히 반대라면 -1 된다.

  • 코사인 유사도로 단어의 유사도 구하기

  • 코사인 유사도 값은 -1 ~ 1 사이이므로, 값은 비교적 높다. = 유사성이 크다.

2.3.6 유사 단어의 랭킹 표시

  • you goodbye 유사도가 높다고? 이상해!
  • 말뭉치가 너무 작기 때문!

2.4 통계 기반 기법 개선하기

2.4.1 상호정보량

  • 앞서 배운 동시발생 행렬의 원소는 단어가 동시에 발생한 횟수를 나타낸다. 그러나 발생 횟수라는 좋은 특징일까? 
  • ‘The’, ‘car’ 동시발생을 생각해보면 ‘the car’라는 문구는 ‘drive car’보다 많이 나타나므로 car drive보다 the 유사할까? 아니다!
  • 이러한 문제를 해결하기 위해 점별 상호정보량(Pointwise Mutual Information(PMI))라는 척도를 사용한다.

  • 동시발생 행렬을 사용하여 PMI 식을 다시 써보자.
  • C 동시발생 행렬, C(x, y) x, y 동시발생하는 횟수, C(x), C(y) 각각 등장 횟수.
  • N 말뭉치에 있는 모든 단어

  • N = 10,000
  • The: 1000 등장, car: 20, drive: 10 등장
  • The, car 동시발생 10, car, drive 동시발생 5

  • 그러나 PMI 문제: 단어의 동시발생 횟수가 0 된다면 log0 = - 무한대가 되어버린다. 
  • 문제를 피하기 위해 양의 상호정보량(PPMI. Positive PMI) 사용한다.

  • PPMI 행렬의 문제
  • 1. 말뭉치의 어휘 수가 증가하면 단어 벡터의 차원 수도 증가한다. 
  • 2. 원소 대부분이 0이다. 벡터의 원소 대부분이 중요하지 않다는 . 이런 벡터는 노이즈에 약하고 견고하지 않다.
  • -> 문제들을 해결하기 위해 수행하는 방법이 벡터의 차원 감소이다.

2.4.2 차원 감소

  • 차원 감소(dimensionality reduction): 문자 그대로 벡터의 차원을 줄이는 방법
  • 그냥 줄이는 아니라, 중요한 정보는 최대한 유지하면서 줄여야 한다.

  • 차원 감소 방법은 여러 가지이지만 책에서는 특잇값분해(Singular Value Decomposition. SVD) 이용한다.

  • 행렬 X U, S, V 행렬의 곱으로 분해. 여기서 U, V 직교행렬(orthogonal matrix)이고, S 대각행렬(diagonal matrix)이다. 

  • U단어 공간으로 생각하자. 
  • S 대각성분에는특잇값 singular value’ 순서로 나열되어 있다.
  • 특잇값: ’해당 중요도

  • 행렬 S에서 특잇값이 작다면 중요도가 낮으므로 버릴 있다. 
  • -> 행렬 U에서도 해당하는 열벡터를 버린다. 

2.4.3 SVD에 의한 차원 감소

2.4.4 PTB 데이터셋

  • PTB 데이터셋에 통계 기반 기법 적용
  • 말뭉치를 사용해서 맥락에 속한 단어의 등장 횟수를 ,
  • PPMI 행렬로 변환
  • SVD 이용해 차원을 감소 시킴
  • -> 좋은 단어 벡터를 얻었다! 이것이 단어의 분산 표현. 단어는 고정 길이의 밀집 벡터로 표현되었다.

2.5 정리

  • WordNet 등의 시소러스를 이용하면 유의어를 얻거나 단어 사이의 유사도를 측정하는 유용한 작업을 있다.
  • 시소러스 기반 기법은 시소러스를 작성하는 엄청난 인적 자원이 든다거나 새로운 단어에 대응하기 어렵다는 문제가 있다.
  • 현재는 말뭉치를 이용해 단어를 벡터화하는 방식이 주로 쓰인다.
  • 최근의 단어 벡터화 기법들은 대부분단어의 의미는 주변 단어에 의해 형성된다 분포 가설에 기초한다.
  • 통계 기반 기법은 말뭉치 안의 단어에 대해서 단어의 주변 단어의 빈도를 집계한다(동시발생 행렬).
  • 동시발생 행렬을 PPMI 행렬로 변환하고 다시 차원을 감소시킴으로써, 거대한희소벡터 작은밀집벡터 변환할 있다.
  • 단어의 벡터 공간에서는 의미가 가까운 단어는 거리도 가까울 것으로 기대된다.
반응형

댓글