FastText
Word2Vec 개념을 확장하여 페이스북에서 개발하였다.
Word2Vec은 단어를 기반으로 학습한다면, FastText는 단어의 n-gram으로 벡터화하여 Word2Vec을 수행한다.
가령 n이 3일 경우 test 단어는 <te, tes, est, st> 로 분리되어 벡터로 만든다.
※ 단어의 시작과 끝에는 <, >이 추가된다.
이런 방법을 통해 FastText는 Word2Vec와 차별점을 가진다.
1) 모르는 단어(OOV. Out Of Vocabulary)에 대해서도 유사도 계산 가능
2) 학습 데이터 내 빈도 수가 적었던 단어에 대해서도 유사도 계산 가능
3) 오탈자도 대응 가능
샘플 데이터 가져오기
이전 글과 동일하게 위키백과의 '이집트' 글을 활용하고자 한다.
위키백과 글을 복사하여 txt 파일을 생성한다.
[Word2Vec] 단어 유사도 구현하기
Word2Vec으로 유사한 단어, 단어 유사도를 간단하게 구현해보자 샘플 데이터 가져오기 https://ko.wikipedia.org/wiki/위키백과:대문 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 위
sunghee2.tistory.com
라이브러리 가져오기
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] 단어 유사도 구현하기 (2) | 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 |