728x90
반응형
단어의 빈도수를 숫자화 시켜준다 (counting)
CountVectorizer 사용 - 단순한 counting
# 단어의 빈도수를 이용해 문서의 특징 추출
# BOW(Bag of Words) : 문서가 가지는 모든 단어, 문맥, 순서를 무시하고 단어에 대해 빈도 수를 부여해 벡터를 생성
# CountVectorizer : 단순하게 텍스트에서 단위별 등장횟수를 카운팅하여 수치벡터(BOW)화
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
contents = ['How to formt my hard disk', 'Hard disk format format problems']
count_vec = CountVectorizer(analyzer='word', min_df=1)
tran = count_vec.fit_transform(raw_documents=contents)
print(tran)
print(count_vec.get_feature_names())
print(tran.toarray())
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(0, 4) 1
(0, 7) 1
(0, 2) 1
(0, 5) 1
(0, 3) 1
(0, 0) 1
(1, 3) 1
(1, 0) 1
(1, 1) 2
(1, 6) 1
['disk', 'format', 'formt', 'hard', 'how', 'my', 'problems', 'to']
[[1 0 1 1 1 1 0 1]
[1 2 0 1 0 0 1 0]]
TfidfVectorizer 사용 - 가중치 부여
# TfidfVectorizer : 문서에서 자주 나오는 단어에 대해 가중치를 높게 부여하나,
# 전체 문성의 모든 문단에서 자주 등장하는 단어에 대해서는 패널티를 주는 방식으로 값을 부여.
tfidf_vec = TfidfVectorizer(analyzer = 'word', min_df = 1)
tran_idf = tfidf_vec.fit_transform(raw_documents=contents)
print(tran_idf)
print(tfidf_vec.get_feature_names())
print(tran_idf.toarray())
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(0, 0) 0.31779953783628945
(0, 3) 0.31779953783628945
(0, 5) 0.4466561618018052
(0, 2) 0.4466561618018052
(0, 7) 0.4466561618018052
(0, 4) 0.4466561618018052
(1, 6) 0.4078241041497786
(1, 1) 0.8156482082995572
(1, 0) 0.29017020899133733
(1, 3) 0.29017020899133733
['disk', 'format', 'formt', 'hard', 'how', 'my', 'problems', 'to']
[[0.31779954 0. 0.44665616 0.31779954 0.44665616 0.44665616
0. 0.44665616]
[0.29017021 0.81564821 0. 0.29017021 0. 0.
0.4078241 0. ]]
728x90
'데이터분석 > 데이터분석' 카테고리의 다른 글
자연어 처리 (0) | 2022.05.26 |
---|---|
밀도기반 클러스터링(DBSCAN) (0) | 2022.05.19 |
지도학습(K-NN) 과 비지도학습(K-Means) 비교 (0) | 2022.05.16 |
군집 분석(Clustering) (0) | 2022.05.16 |
인공신경망 (ANN) (0) | 2022.05.16 |