본문 바로가기
머신러닝

[머신러닝] 자연어 처리: 문장을 작은 단위로 쪼개기

by whdgus928 2023. 2. 14.

자연어 문장을 작은 단위인 토큰으로 분석하는 과정을 학습합니다.

토큰화: 문장을 토큰 시퀀스로 나누는 과정

토크나이저: 토큰화를 수행하는 프로그램

 

단어 단위 토큰화

  - ex) 어제 카페 갔었어 -> 어제, 카페, 갔었어

  - 어휘 집합의 크기가 매우 커질 수 있다

  - 갔었어, 갔었는데요 같이 살짝만 바뀌어도 어휘 집합에 다 포함시켜야한다

 

문자 단위 토큰화

  - ex) 어제 카페 갔었어 -> 어,제, 카,페, 갔,었,어

  - 해당 언어의 모든 문자를 어휘 집합에 포함하므로 미등록 토큰 문제로부터 자유롭습니다

  - 각 문자 토큰은 의미 있는 단위가 되기 어렵습니다

 

서브워드 단위 토큰화

  - 단어와 문자 단위 토큰화의 중간에 있는 형태로 토큰화

  - 대표적인 방법으로 바이트 페어 인코딩

 

바이트 페어 인코딩(BPE): 원래 정보를 압축하는 알고리즘, 최근에는 자연어 처리 모델이 쓰이는 토큰화 기법

  - 데이터에 등장한 글자를 초기 사전으로 구성해 연속된 두 글자를 한 글자로 병합

BPE 활용한 토큰화 절차

1. 어휘집합구축: 자주 등장하는 문자열 병합하고, 어휘 집합에 추가

2. 토큰화: 토큰화 대상 문장의 각 어절에서 어휘 집합에 있는 서브워드가 포함되었을 때 해당 서브워드를 어절에서 분리합니다

 

BPE 어휘 집합 구축하기

토큰 빈도
h,u,g 10
p,u,g 5
p,u,n 12
b,u,n 4
h,u,g,s 5

여기서 토큰을 2개씩 묶어서 나열한다

바이그램 쌍 빈도
b,u 4
g,s 5
h,u 15
p,u 17
u,g 20
u,n 16

가장 많이 등장한 바이그램 쌍은 u,g이다. 따라서 ug를 어휘 집합에 추가한다.

추가한 어휘 집합을 토대로 위의 과정을 반복한다.

이런식으로 사용자가 정한 크기가 될 때까지 이러한 과정을 반복해서 수행한다

반응형

댓글