티스토리 뷰
인공지능/자연어처리
자연어처리 - 특징 추출(CountVectorizer, TfidVectorizer, HashingVectorizer)
RosyPark 2019. 10. 26. 21:020. 특징 추출 모듈
자연어 처리에서 특징 추출이란? 텍스트 데이터에서 단어나 문장들을 어떤 특징 값으로 바꿔주는 것을 의미
기존에 문자로 구성되어 있던 데이터를 모델에 적용할 수 있도록 특징을 뽑아 어떤값으로 바꿔서 수치화
- CountVectorizer - 단순히 각 테스트에서 횟수를 기준으로 특징 추출
- TfidVectorizer - TF-IDF라는 값을 사용해 텍스트에서 특징 추출
- HashingVectorizer - CounterVectorizer와 동일하지만 해시 함수를 사용, 텍스트의 크기가 클수록 HashingVectorizer 사용하는게 효율적
1. CountVectorizer
- 텍스트 데이터에서 횟수를 기준으로 특징을 추출하는 방법
- 어떤 단위의 횟수를 선택하는지는 선택사항
- 횟수를 사용해서 벡터를 만들기 때문에 직관적이고 간단해서 여러 상황에서 사용할 수 있음
- 하지만 횟수만을 특징으로 잡기 때문에 큰 의미가 없지만 자주 사용되는 단어들, 조사 또는 지시 대명사가 높은 값을 가지기 때문에 유의미하게 사용하기 어려울 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from sklearn.feature_extraction.text import CountVectorizer
text_data = ['나는 배가 고프다', '내일 저녁 뭐먹지', '내일 학교 와야하나', '저녁 먹고 뭐먹지']
count_vectorizer = CountVectorizer()
count_vectorizer.fit(text_data)
print(count_vectorizer.vocabulary_)
"""
{'나는': 1, '배가': 5, '고프다': 0, '내일': 2, '저녁': 7,
'뭐먹지': 4, '학교': 8, '와야하나': 6, '먹고': 3}
"""
sentence = [text_data[0]]
print(count_vectorizer.transform(sentence).toarray())
"""
[[1 1 0 0 0 1 0 0 0]]
"""
|
cs |
2. TfidVectorizer
- TF-IDF라는 특정한 값을 사용해서 텍스트 데이터의 특징을 추출하는 방법
- TF(Term Frequency)? 특정 단어가 하나의 데이터 안에서 등장하는 횟수
- DF(Document Frequency)? 문서 빈도 값으로, 특정 단어가 여러 데이터에 자주 등장하는지를 알려주는 지표
- IDF(Inverse Document Frequency)? DF값에 역수를 취해서 구할 수 있으며, 특정 단어가 다른 데이터에 등장하지 않을수록 값이 커진다.
- 단순 횟수를 이용하는 것보다 각 단어의 특성을 좀 더 반영할 수 있다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from sklearn.feature_extraction.text import TfidfVectorizer
text_data = ['나는 배가 고프다', '내일 저녁 뭐먹지', '내일 학교 와야하나', '저녁 먹고 뭐먹지']
tfidf_vectorizer = TfidfVectorizer()
tfidf_vectorizer.fit(text_data)
print(tfidf_vectorizer.vocabulary_)
"""
{'나는': 1, '배가': 5, '고프다': 0, '내일': 2, '저녁': 7, '뭐먹지': 4, '학교': 8, '와야하나': 6, '먹고': 3}
"""
sentence = [text_data[0]]
print(tfidf_vectorizer.transform(sentence).toarray())
"""
[[0.57735027 0.57735027 0. 0. 0. 0.57735027
0. 0. 0. ]]
"""
|
cs |
<출처>
1. 텐서플로와 머신러닝으로 시작하는 자연어 처리
'인공지능 > 자연어처리' 카테고리의 다른 글
자연어처리 - WSL 환경에서 시작하기 (1) | 2019.12.25 |
---|---|
자연어처리 - 코랩(Colab) 시작하기 (0) | 2019.12.25 |
자연어처리 - 임베딩 파인튜닝 (0) | 2019.12.25 |
자연어처리 - 텍스트 유사도 (0) | 2019.10.26 |
자연어처리 - 임베딩 (0) | 2019.10.26 |
댓글