관리 메뉴

Bull

[NLP] FastText | study book 본문

Artificial Intelligence/NLP

[NLP] FastText | study book

Bull_ 2024. 9. 21. 23:59

FastText concept


2015년 메타의 FAIR 연구소에서 개발한 오픈소스 임베딩 모델로 텍스트 분류 및 텍스트 마이닝 알고리즘이다. Word2Vec과 유사하지만 fastText는 단어의 하위 단어를 고려하여 더 높은 정확도와 성능을 제공한다. 하위 단어 고려를 위해 N-gram 을 사용해 단어를 분해하고 벡터화한다.

  • < , >(꺽새) 와 같은 특수 기호를 사용해 단어의 시작과 끝을 나타낸다.
  • N-gram을 사용해 하위 단어 집합이 구성되는데,
    "서울특별시" 를 바이그램으로 분할 시 "서울", "울특", "특별", "별시" 가 된다.
  • 분해된 하위 단어 집합은 나눠지지 않은 자신 단어도 포함됨.
  • 만들어진 단어는 고유한 벡터값을 가짐.
  • 같은 하위 단어를 공유하는 단어 끼리는 정보 공유해 학습이 가능하다. 그래서 비슷한 단어끼리는 비슷한 임베딩 벡터가 되어 유사도를 높일 수 있다.
  • OOV 단어도 하위 단어로 나누어 임베딩 계산이 된다. "개인택시", "정보처리기사", "임대차보호법" 이라는 단어가 말뭉치에는 있지만 "개인정보보호법"은 없다. 하지만 하위 단어로 조합하여 만들 수 있어서 이 OOV에 대한 임베딩 연산이 가능하다.

FasstText class


from gensim.models import FastText

fastText = FastText(
    sentences=tokens,
    vector_size=128,
    window=5,
    min_count=5,
    sg=1,
    epochs=3,
    min_n=2,
    max_n=6
)

실습: FastText


pip install Korpora
pip install konlpy
pip install gensim
from Korpora import Korpora

corpus = Korpora.load("kornli")
corpus_texts = corpus.get_all_texts() + corpus.get_all_pairs()
tokens = [sentence.split() for sentence in corpus_texts]

print(tokens[:3])

KorNLI(Korean Natural Language Inference)


한국어 자연어 추론(NLI)를 위한 데이터 셋이다. 자연어 추론은 두 개 이상의 문장이 주어졌을 때 두 문장 간의 관계를 분류하는 작업을 의미한다.

주어진 문장이 함의 관계, 중립 관계, 불일치 관계 중 어느 관계에 해당되는지 분류할 수 있다.

  • get_all_texts : 모든 문장을 튜플 형태로 반환한다.
  • get_all_pairs : 입력 문장과 쌍을 이루는 대응 문장을 튜플 형태로 반환한다.

이어서..

fastText.save("../models/fastText.model")
fastText = FastText.load("../models/fastText.model")
oov_token = "사랑해요"
oov_vector = fastText.wv[oov_token]

print(oov_token in fastText.wv.index_to_key)
print(fastText.wv.most_similar(oov_vector, topn=5))
  • 학습 결과 출력은 생략.
  • index_to_key : 학습된 단어 사전을 나타내는 리스트. "사랑해요"라는 단어는 단어 사전 리스트 내에 존재하지 않아 OOV 처리된다.
  • 그러나 fastText는 하위 단어로 나뉘어 있기 때문에 "사랑해요"라는 단어를 처리할 수 있다.

 

참고자료

https://product.kyobobook.co.kr/detail/S000209621433

 

파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습 | 윤대희 - 교보문고

파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습 | 트랜스포머는 딥러닝 분야에서 성능이 우수한 모델로 현대 인공지능 분야의 핵심 기술입니다. 트랜스포머와 비전 트랜스

product.kyobobook.co.kr