일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 합성곱 신경망
- 코랩
- 과적합
- 카운트 벡터
- 양방향 RNN
- 코딩테스트
- 망각 게이트
- 딥러닝
- 임베딩
- 원-핫 인코딩
- RNN
- 프로그래머스
- 입력층
- 성능 최적화
- 순환 신경망
- 풀링층
- 시계열 분석
- 자연어 전처리
- NLTK
- 합성곱층
- 출력층
- 전이학습
- 텍스트 마이닝
- 클러스터링
- KONLPY
- 생성모델
- 이미지 분류
- COLAB
- cnn
- 완전연결층
Archives
- Today
- Total
Colab으로 하루에 하나씩 딥러닝
자연어 전처리_3.임베딩_2) 횟수 기반 임베딩 본문
728x90
횟수 기반 임베딩
- 단어가 출현한 빈도를 고려하여 임베딩하는 방법
- 대표적으로 카운터 벡터와 TF-IDF가 존재
카운터 벡터(Counter Vector)
- 문서 집합에서 단어를 토큰으로 생성하고 각 단어의 출현 빈도수를 이용하여 인코딩해서 벡터를 만드는 방법
- 토크나이징과 벡터화가 동시에 가능
### 코퍼스에 카운터 벡터 적용
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'This is last chance.',
'and if you do not have this chance.',
'you will never get any chance.',
'will you do get this one?',
'please, get this chance'
]
vect = CountVectorizer()
vect.fit(corpus)
vect.vocabulary_
### 배열 변환
vect.transform(['you will never get any chance.']).toarray()
### 불용어 제거한 카운터 벡터
vect = CountVectorizer(stop_words=["and","is","please","this"]).fit(corpus) # stop_words를 사용하여 is, not, an 같은 불용어 제거
vect.vocabulary_
TF-IDF(Term Frequency-Inverse Document Frequency)
- TF(단어 빈도): 문서 내에서 특정 단어가 출현한 빈도를 의미
- IDF(역문서 빈도):
- DF(문서 빈도): 한 단어가 전체 문서에서 얼마나 공통적으로 많이 등장하는지 나타내는 값
- 특정 단어가 모든 문서에 등장하는 일반적인 단어(a, the)라면, TF-IDF 가중치를 낮출 필요가 있음
- DF 값이 클수록 TF-IDF의 가중치 값을 낮추기 위해 DF의 값에 역수를 취함, 이 값이 IDF
- 스무딩(smoothing):
- 전체 문서에 특정 단어가 발생하는 빈도가 0이라면 분모가 0이 되는 상황이 발생.
- 이를 방지하고자 분모에 1을 더해 주는 것
- 사용 예시
- 키워드 검색을 기반으로 하는 검색 엔진
- 중요 키워드 분석
- 검색 엔진에서 검색 결과의 순위를 결정
### TF-IDF를 적용한 후 행렬로 표현
from sklearn.feature_extraction.text import TfidfVectorizer
doc = ['I like machine learning', 'I love deep learning', 'I run everyday']
tfidf_vectorizer = TfidfVectorizer(min_df=1)
tfidf_matrix = tfidf_vectorizer.fit_transform(doc)
doc_distance = (tfidf_matrix * tfidf_matrix.T)
print("유사도를 위한", str(doc_distance.get_shape()[0]),'x',str(doc_distance.get_shape()[1]),'행렬을 만들었습니다.')
print(doc_distance.toarray())
참고: 출처: 서지영, 『딥러닝 텐서플로 교과서』, 길벗(2022)
'딥러닝_개념' 카테고리의 다른 글
자연어 전처리_3.임베딩_4) 횟수/예측 기반 임베딩 (1) | 2022.12.15 |
---|---|
자연어 전처리_3.임베딩_3) 예측 기반 임베딩 (1) | 2022.12.14 |
자연어 전처리_3.임베딩_1) 희소 표현 기반 임베딩(원-핫 인코딩) (0) | 2022.12.12 |
자연어 전처리_2.전처리_4) 정규화 (1) | 2022.12.10 |
자연어 전처리_2.전처리_3) 어간 추출 / 표제어 추출 (0) | 2022.12.09 |