Notice
Recent Posts
Recent Comments
Link
«   2025/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
Tags
more
Archives
Today
Total
관리 메뉴

Applied Data Analysis Study

문자를 숫자로 표현하는 방법 & Corpus & Out-of-Vocabulary(OOV) 본문

딥러닝 & 파이토치

문자를 숫자로 표현하는 방법 & Corpus & Out-of-Vocabulary(OOV)

Reve22 2022. 4. 23. 15:06

문자를 숫자로 표현하는 방법

1. 문장을 의미 있는 부분(단위)로 나눈다(text segmentation) 

s="부평역은 길이 복잡하다"
s=s.split(" ")
print(s)  # ["부평역은", "길이", "복잡하다"]

     Tokenization이라고 하고, 쪼개진 부분을 Token(문장을 구성하는 기본단위)이라고 부른다. 단어를 기준으로 나눌 수도 있고 형태소 단위로 나눌 수도 있고 언어의 특성마다 단위를 어떻게 하느냐에 따라서 성능이 달라질 수 있음 

컴퓨터에게 "여기부터 여기까지의 문자의 나열은 특정한 의미가 있는 부분이니 하나로 인식하렴"이라고 가르쳐주는 과정이라고 볼 수 있다. 

2. 나눠진 의미 있는 부분을 숫자로 바꿔 문장을 숫자로 표현한다.(Representation)

token2idx={}
index=0

for sentence in [s]:
    tokens=sentance.split()
    for token in tokens:
        if token2idx.get(token)==None:
            token2idx[token]= index
            index+=1
print(token2idx)

def indexed_sentence(sentence):
    return [token2idx[token] for token in sentence]
    
s_1=indexed_sentence(s.split( ))
print(s_1)

 

Corpus 

- Token을 많이 모아 놓은 문장의 모음을 "말뭉치(Corpus)"라고 한다. 

- 몇가지 유명한 Corpus가 있고,  위키피디아를 기반으로 하는 다양하 Corpus를 사용하기도 하고 웹커뮤니티의 글을 수집하여 Corpus를 만들기도 한다. 

- Corpus의 크기가 커지면 사전의 크기가 커지고, 사전의 크기가 커질수록 우리가 만드는 모델의 사이즈도 커진다. 크기가 커지면 메모리에 부담을 줄 수 있으므로 효율적으로 만드는 방법을 고민하게 된다. 

Token을 저장해뒀던 Vocabulary에는 없는 단어는 어떻게 처리할까?

이런 상황을 대비해서 특수한 Token인 <uuk> Token(Unkonwn의 앞 글자를 뜻함)을 Vocabulary에 없는 단어를 <uuk>로 변환하도록 처리한다.

 

 

'딥러닝 & 파이토치' 카테고리의 다른 글

one-hot encoding  (0) 2022.04.29
딥러닝 논문 모아두는곳  (0) 2022.04.29
[NLP] n-gram Tokenization  (0) 2022.04.23
Byte Pair Encoding  (0) 2022.04.22
VGG & GoogleNet  (1) 2022.04.16
Comments