FastText
Word2Vec 개념을 확장하여 페이스북에서 개발하였다.
Word2Vec은 단어를 기반으로 학습한다면, FastText는 단어의 n-gram으로 벡터화하여 Word2Vec을 수행한다.
가령 n이 3일 경우 test 단어는 <te, tes, est, st> 로 분리되어 벡터로 만든다.
※ 단어의 시작과 끝에는 <, >이 추가된다.
이런 방법을 통해 FastText는 Word2Vec와 차별점을 가진다.
1) 모르는 단어(OOV. Out Of Vocabulary)에 대해서도 유사도 계산 가능
2) 학습 데이터 내 빈도 수가 적었던 단어에 대해서도 유사도 계산 가능
3) 오탈자도 대응 가능
샘플 데이터 가져오기
이전 글과 동일하게 위키백과의 '이집트' 글을 활용하고자 한다.
위키백과 글을 복사하여 txt 파일을 생성한다.
라이브러리 가져오기
import re
from gensim.models import FastText
from kss import split_sentences
from konlpy.tag import Okt
데이터 가져오기
위에서 저장한 txt 파일을 불러온다.
path = 'sample.txt'
file = open(path)
content = file.read()
이전 Word2Vec 글과 동일하게 전처리를 진행하였다.
전처리 1 - 한글 추출
ko_content = re.sub('[^가-힣ㄱ-ㅎㅏ]', ' ', content)
전처리 2 - 문장 분리
sentences = split_sentences(ko_content)
전처리 3 - 명사 추출 및 불용어 제거
okt = Okt()
stopwords = ['은', '터', '것', '수', '로서', '로', '그', '년', '이', '더']
tokens = [[word for word in okt.nouns(sentence) if not word in stopwords] for sentence in sentences]
tokens
학습
Gensim 라이브러리를 이용하여 FastText 학습해준다.
model = FastText(tokens, min_count=1, window=2, sg=1)
유사 단어 추출
model.wv.most_similar("미래")
반응형
'💻 개발IT > 기타' 카테고리의 다른 글
CSTS 요약 2 - 테스트 설계 기법 (0) | 2023.06.12 |
---|---|
CSTS 요약 1 - 테스트 개요 (0) | 2023.06.12 |
[gitlab-ci.yaml] config contains unknown keys: rules (0) | 2023.03.21 |
[Python] 위키피디아(한국어) 데이터 가져오기 (1) | 2023.02.08 |
[Word2Vec] 단어 유사도 구현하기 (0) | 2023.02.01 |
[Gensim] The vocab attribute was removed from KeyedVector in Gensim 4.0.0. (0) | 2023.01.29 |
[selenium] ElementClickInterceptedException: Message: element click intercepted: (0) | 2022.09.26 |
네이버 지도 API에서 지도 겹침 문제 (0) | 2022.09.22 |