-
TensorFlow 기초 33 - sklearn이 제공하는 자연어 특징 추출 : 문자열을 수치 벡터화TensorFlow 2022. 12. 13. 10:35
CountVectorizer
sklearn이 제공하는 자연어 특징 추출 : 문자열을 수치 벡터화
각 텍스트에서 단어 출현 횟수를 카운팅하는 방법으로 CountVectorizerTfidfVectorizer
TF : 특정 단어가 하나의 문장 안에서 등장하는 횟수
DF : 특정 단어가 여러 문장에 등장하는 횟수
IDF : DF에 역수를 취함
# TF-IDF : 하나의 문장 안에서 자주 나오는 단어에 대해 가중치를 부여. 여러 문장에서 자주 등장하는 단어의 경우에는 패널티를 주는 방법# sklearn이 제공하는 자연어 특징 추출 : 문자열을 수치 벡터화 # 각 텍스트에서 단어 출현 횟수를 카운팅하는 방법으로 CountVectorizer : 수치 벡터화(BOW) from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer content = ['How to format my hard disk', 'Hard disk format format problems'] # CountVectorizer 연습 count_vec = CountVectorizer(analyzer='word', min_df=1) # analyzer='char' print(count_vec) tran = count_vec.fit_transform(raw_documents=content) # token 처리 후 벡터화 print(tran) print(count_vec.get_feature_names_out()) # <== 사전순으로 인덱싱 # ['disk' 'format' 'hard' 'how' 'my' 'problems' 'to'] <== BOW 벡터 # 0 1 2 3 4 5 6 <== 사전순으로 인덱싱 print(tran.toarray()) # 의미 있는 단어를 알기에 문제가 있다. 단순히 단어들이 몇 번 나왔는지만 알 수 있다. print('-------') # TfidfVectorizer # TF : 특정 단어가 하나의 문장 안에서 등장하는 횟수 # DF : 특정 단어가 여러 문장에 등장하는 횟수 # IDF : DF에 역수를 취함 # TF-IDF : 하나의 문장 안에서 자주 나오는 단어에 대해 가중치를 부여. 여러 문장에서 자주 등장하는 단어의 경우에는 패널티를 주는 방법 tfidf_vec = TfidfVectorizer(analyzer='word', min_df=1) tran_idf = tfidf_vec.fit_transform(raw_documents=content) # token 처리 후 벡터화 print(tran_idf) print(tfidf_vec.get_feature_names_out()) print(tran_idf.toarray()) <console> CountVectorizer() (0, 3) 1 (0, 6) 1 (0, 1) 1 (0, 4) 1 (0, 2) 1 (0, 0) 1 (1, 1) 2 (1, 2) 1 (1, 0) 1 (1, 5) 1 ['disk' 'format' 'hard' 'how' 'my' 'problems' 'to'] [[1 1 1 1 1 0 1] [1 2 1 0 0 1 0]] ------- (0, 0) 0.3347122780719073 (0, 2) 0.3347122780719073 (0, 4) 0.4704264280854632 (0, 1) 0.3347122780719073 (0, 6) 0.4704264280854632 (0, 3) 0.4704264280854632 (1, 5) 0.4976748316029239 (1, 0) 0.3540997415957358 (1, 2) 0.3540997415957358 (1, 1) 0.7081994831914716 ['disk' 'format' 'hard' 'how' 'my' 'problems' 'to'] [[0.33471228 0.33471228 0.33471228 0.47042643 0.47042643 0. 0.47042643] [0.35409974 0.70819948 0.35409974 0. 0. 0.49767483 0. ]]
'TensorFlow' 카테고리의 다른 글
TensorFlow 기초 35 - naver 제공 영화 5편을 웹스크래핑 해서 평점을 읽어 영화 간 유사도 확인 (1) 2022.12.13 TensorFlow 기초 34 - 한글 데이터로 워드 카운트 (0) 2022.12.13 TensorFlow 기초 32 - 형태소 분석 후 word2vec을 이용하여 단어 간 유사도 확인 (0) 2022.12.09 TensorFlow 기초 31 - 워드 임베딩 vs 원핫 인코딩, 밀집표현, 단어 간 유사도 (1) 2022.12.09 TensorFlow 기초 30-1 - 전이학습(기초 30 이어서) (0) 2022.12.08