from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.utils import to_categorical
t = Tokenizer()
t.fit_on_texts(tokens)
print("각 토큰에게 고유의 정수 부여")
print("----------------------")
print(t.word_index)
print(" ")
s1=t.texts_to_sequences(tokens)[0]
print("부여된 정수로 표시된 문장1")
print("----------------------")
print(s1)
print(" ")
s2=t.texts_to_sequences(tokens)[1]
print("부여된 정수로 표시된 문장2")
print("----------------------")
print(s2)
print(" ")
s1_one_hot = to_categorical(s1)
print("문장1의 one-hot-encoding")
print("----------------------")
print(s1_one_hot)
print(" ")
s2_one_hot = to_categorical(s2)
print("문장2의 one-hot-encoding")
print("----------------------")
print(s2_one_hot)
<Output>
각 토큰에게 고유의 정수 부여
----------------------
{'자연어': 1, '처리': 2, '정말': 3, '는': 4, '즐거워': 5, '즐거운': 6, '다': 7, '같이': 8, '해보자': 9}
부여된 정수로 표시된 문장1
----------------------
[1, 2, 4, 3, 3, 5]
부여된 정수로 표시된 문장2
----------------------
[6, 1, 2, 7, 8, 9]
문장1의 one-hot-encoding
----------------------
[[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 1.]]
문장2의 one-hot-encoding
----------------------
[[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
vectors = vectorizer.fit_transform(tokens) #여러 개의 문장을 넣어줘야 작동합니다!!
print(vectorizer.get_feature_names())
print(vectors.toarray())
<Output>
['같이', '자연어', '정말', '즐거운', '즐거워', '처리', '해보자']
[[0 1 2 0 1 1 0]
[1 1 0 1 0 1 1]]
vocabulary의 인덱스를 기준으로 카운트가 정수로 표시됨
즐거운과 즐거워는 같은 의미를 갖는 토큰이지만 okt는 이를 구분하지못함. 같은 의미의 토큰을 다르게 학습할 수 있음.
단어가 몇 번 등장했는지에 대한 정보
if) 어떤 단어가 언급된 문서의 수가 적음-> 그 단어는 문서 분류하는데 중요한 단어로 취급한다.
등장횟수가 많고, 문서 분별력이 있는 단어를 점수화하여 벡터화 한 기법.
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(min_df=0)
tfidf_vectorizer = tfidf.fit_transform(tokens)
#tf-idf dictionary
tfidf_dict = tfidf.get_feature_names()
print(tfidf_dict)
print(tfidf_vectorizer.toarray())
['같이', '자연어', '정말', '즐거운', '즐거워', '처리', '해보자'][0. 0.29017021 0.81564821 0. 0.4078241 0.29017021
0. ][0.49922133 0.35520009 0. 0.49922133 0. 0.35520009
0.49922133]]```