코딩세상
[자연어 처리] 텍스트 전처리 및 단어 임베딩 - fastText 본문
- fastText
앞서 설명한 word2vec의 사진으로 이미지에 있는 단어들을 바탕으로 "엘리스는" 이라는 단어를 추론할 수 있지만, 제시된 문장처럼 새로운 문장을 넣을 시 학습 데이터 내 존재하지 않았던 단어 백터는 생성할 수 없습니다.
이를 미등록 단어문제, out-of-vocabulary라고 합니다.
그렇다면 위 문제를 어떻게 해결할 수 있을까요?
앞에서 모델을 학습 시킬 때 단어 단위로 단어 임베딩 벡터를 학습시키는 것이 아닌 각 단어를 문자 단위로 나누어서 단어 임베딩 벡터를 학습시켜서 문제를 해결할 수 있습니다.
위에서 설명한 것 처럼 단어를 문자 단위로 나누어 단어 임베딩 벡터를 학습시키게 될 경우 위 사진처럼 학습 데이터에 존재하지 않았던 단어의 임베딩 벡터 또한 생성이 가능해지게 됩니다.
fastText를 모델에 적용하는 방법은 매우 간단합니다. 앞에서 우리가 word2vec을 배울 때 자연어처리 라이브러리인 gensim에 fastText라이브러리 역시 구성되어 있으며 이를 호출하여 간단하게 fastText를 적용하여 사용할 수 있습니다.
아래의 코드를 통해 fastText 사용 방법을 확인해보겠습니다.
from gensim.models import FastText
doc = [["서울에", "살고", "있는", "맥스는", "강아지를", "좋아한다"]]
ft_model = FastText(min_count=1, window=2, vector_size=300)
ft_model.build_vocab(doc)
ft_model.train(doc, total_examples=ft_model.corpus_count, epochs=20)
similar_word = ft_model.wv.most_similar("맥스는")
print(similar_word) #이를 통해 "맥스는"과 각 단어들의 상관관계 비교가능
new_vector = ft_model.wv["종아한다고"]
print(new_vector) # 새로 만든 단어들과 기존의 단어들의 상관관계 비교가능
- vector_size = 워드 벡터의 특징 값. 즉, 임베딩 된 벡터의 차원.
- window = 컨텍스트 윈도우 크기
- min_count = 단어 최소 빈도 수 제한 (빈도가 적은 단어들은 학습하지 않는다.)
# 출처 및 참고자료
엘리스 AI 트랙 7기 - [이론] 텍스트 전처리 및 단어 임베딩
'인공지능' 카테고리의 다른 글
[자연어 처리] 텍스트 전처리 및 단어 임베딩 - wrod2vec (0) | 2023.09.27 |
---|---|
[자연어 처리] 텍스트 전처리 및 단어 임베딩 - 단어 임베딩 (0) | 2023.09.27 |
[자연어 처리] 텍스트 전처리 및 단어 임베딩 - 텍스트 전처리 (0) | 2023.09.24 |
[자연어 처리] 텍스트 전처리 및 단어 임베딩 - 자연어 처리 (0) | 2023.09.24 |
[이미지] Convolutional Neural Network - 대표적인 CNN 모델 (0) | 2023.09.20 |
Comments