본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

AI/LLM

문장을 숫자로 바꾸기 워드임베딩, 단어의 의미 벡터(embedding)를 데이터로부터 학습하는 신경망 모델 Word Vector, Word2Vec 자연어를 컴퓨터가 이해할 수 있는 숫자 벡터로 변환하는 과정 (feat.원핫 인코딩 One-Hot-Encoding)


빈도분석문장을 숫자로 바꾸는 가장 기초 방법은 빈도기반 방법이있다. 

문장을 숫자로 바꾸는 가장 기초 방법은 빈도기반 방법이있다. 

Count, Frequency, Binary occurrence.

https://standout.tistory.com/1833

 

빈도분석이란? Count, Frequency(count를 비율로 바꾼것), Binary occurrence(나왔는지, 안나왔는지만 보는

빈도분석문장을 숫자로 바꾸는 가장 기초 방법은 빈도기반 방법이있다. Count, Frequency(count를 비율로 바꾼것), Binary occurrence(나왔는지, 안나왔는지만 보는 방식).텍스트 데이터를 수치화하기 위해

standout.tistory.com

 

 


이후 개선된 가중치 방식으로 TF-IDF, IDF, 

확장되고 현대적 결하방식으로 Word2Vec, BERT, hybrid(TF-IDF + embedding) 이 있다. 

 

 

빈도분석 - TF-IDF, Term Frequency Inverse Document Frequency 단어빈도 역문서 빈도의 조합. 

빈도가 높다는 것은 글을 대표한다라는 질문에서 시작됨. 빈도가 높다고 해서 무조건 중요한 것은 아니라는 한계를 극복하고자했다.

1958년 IBM의 한스피터 룬에 의해 재연된 아이디어이며 현재까지도 거의 모든 검색 엔진의 핵심 기술로 널리 사용되고있음.

https://standout.tistory.com/1832

 

빈도분석 - TF-IDF란? , Term Frequency Inverse Document Frequency 단어빈도 역문서 빈도의 조합.

빈도분석 - TF-IDF, Term Frequency Inverse Document Frequency 단어빈도 역문서 빈도의 조합. 빈도가 높다는 것은 글을 대표한다라는 질문에서 시작됨. 빈도가 높다고 해서 무조건 중요한 것은 아니라는 한계

standout.tistory.com

 

 

 

워드임베딩   - 워드 벡터 Word Vector, Word2Vec

자연어를 컴퓨터가 이해할 수 있는 숫자 벡터로 변환하는 과정

Python, R은 텍스트를 직접 처리하지 못했다. 

고정된 차원의 벡터 공간에 단어를 표해 비슷한 의미를 가진 단어들은 벡터 공간상에서 가까운 위치에 자연스럽게 모이게 됨.

데이터 규모가 클수록 장점이 나타나며 대규모 데이터 분석에 강력함. 

 

 

원핫인코딩으로 의미없는 위치표시용 입력으로 word2vec 내부학습후 의미데이터 embedding 출력한다 .

One-hot = 학생 이름표 (구분용)
Word2Vec = 시험 + 과제 + 관계를 학습하는 과정
Embedding = 학생의 “능력 좌표”

 

 

원핫 인코딩 One-Hot-Encoding의 확장버전이다. 

one-hot 입력으로 해서 학습된 압축 의미공간. 

새로운 단어가 들어올때마다 그 단어를 좌표 공간의 한 점으로 찍는 방식. 

 "밥" → [1, 0, 0, 0]

from sklearn.preprocessing import OneHotEncoder
import numpy as np

words = np.array([["밥"], ["빵"], ["국"], ["밥"]])

encoder = OneHotEncoder(sparse=False)
onehot = encoder.fit_transform(words)

print(encoder.categories_)
print(onehot)
밥 → [1, 0, 0]
빵 → [0, 1, 0]
국 → [0, 0, 1]

 

 

Word2Vec

단어의 의미 벡터(embedding)를 데이터로부터 학습하는 신경망 모델

단어를 백터로 변화시킨다. Word to Vector라는 의미. 단어를 숫자로 변환해 벡터 공간에 배치하는 밀집표현기술

5~20개 단어로 문맥 크기를 설정하고 샘플 데이터를 생성해 학습함. 

긍정부정, 시점, 성별 등 다양한 의미적 속성과 방향성을 반영함. 

단어간의 수학적 연산을 통한 의미관계 추론이 가능함.

환불, 취소를 완전히 다른 단어로 취급하는 기존 원핫인코딩과 달리 비슷한 맥락에서 사용된 단어들의 의미속성을 파악하여 유사도를 높게 묶을 수 있음. 

from gensim.models import Word2Vec

sentences = [
    ["밥", "먹다", "맛있다"],
    ["빵", "먹다", "달다"],
    ["국", "먹다", "뜨겁다"],
    ["밥", "맛있다", "좋다"]
]

model = Word2Vec(
    sentences,
    vector_size=50,   # 벡터 차원
    window=2,         # 문맥 범위
    min_count=1,
    sg=1              # skip-gram
)

# 단어 벡터 확인
print(model.wv["밥"])

# 유사 단어
print(model.wv.most_similar("밥"))
[ 0.12 -0.34  0.08  0.56 -0.21 ... 0.09 ]
print(model.wv.most_similar("밥"))

*“밥”이라는 단어가 50차원 공간의 한 점으로 표현됨

 

 

 


Word2Vec 학슴으로 생성된 단어벡터는 주로 100~200 차원이상의 고차원이기때문에 시각적인 해석이 어려우며 데이터를 축소하여 그래프로 시각화함으로써 단어간의 의미적 군단 구조와 패턴을 직관적으로 해석하고 이해하기위해 선형 PCA, 비선형 t-SNE기반 시각화를 사용함.

https://standout.tistory.com/1781

 

선형차원축소, PCA Principal Component Analysis: 가장 기본적인 차원축소

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com

https://standout.tistory.com/1783

 

비선형 차원축소, t-SNE, t-distributed Stochastic Neighbor Embedding

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com