728x90
0.정수 인코딩
텍스트 데이터를 모델에 사용할 수 있는 숫자 형식으로 변환하는 방법
컴퓨터는 자연어를 처리하기 어렵기 때문에 텍스트 데이터를 모델이 이해할 수 있는 숫자 형식으로 변환하는 과정을 거쳐야한다.
1.빈도수 보기(NLTK FreqDist)
문장을 토큰화 하고 빈도수를 보기위해 FreqDist를 사용할수있다.
from nltk import FreqDist
import numpy as np
from nltk.tokenize import TreebankWordTokenizer
import re
import tensorflow as tf
import keras_nlp
#텍스트
text="hello my name is asa. I'm very strong and hello hello"
#소문자화
text = text.lower()
#구두점 및 특수문자 제거
text = re.sub(r'[^\w\s]', '', text)
#토큰화
tokenizer = TreebankWordTokenizer()
textTok = tokenizer.tokenize(text)
#빈도수 계산
vocab = FreqDist(textTok)
print(textTok)
print(vocab["hello"])
print(vocab.most_common(4))
#결과
['hello', 'my', 'name', 'is', 'asa', 'im', 'very', 'strong', 'and', 'hello', 'hello']
3
[('hello', 3), ('my', 1), ('name', 1), ('is', 1)]
# 한국어 정수 인코딩
from konlpy.tag import Okt
from nltk import FreqDist
#토큰화
okt = Okt()
text="나는 당신과 그의 소중한 사람이 될수있었나요? 그러면 좋겠네요. 당신을 사랑해요."
textTok = okt.nouns(text)
#빈도수 계산
vocab = FreqDist(textTok)
print(textTok)
print(vocab["당신"])
print(vocab.most_common(4))
#결과
['나', '당신', '그', '사람', '당신', '사랑']
2
[('당신', 2), ('나', 1), ('그', 1), ('사람', 1)]
2.정수 인코딩하기
import tensorflow as tf
# 텍스트 데이터
texts = ["hello my name is asa", "I am very strong and confident", "hello hello hello"]
# TextVectorization 레이어 정의
vectorizer = tf.keras.layers.TextVectorization(output_mode='int', output_sequence_length=5)
# 텍스트를 텐서로 변환 후 학습(adapt)
vectorizer.adapt(texts)
# 텍스트를 정수로 변환
vectorized_texts = vectorizer(tf.constant(texts))
print("정수화된 텍스트:")
print(vectorized_texts.numpy())
정수화된 텍스트:
[[ 2 6 5 7 10]
[ 8 12 3 4 11]
[ 2 2 2 0 0]]
2-1.TextVectorization 레이어 정의
TextVectorization는 텍스트 데이터를 벡터 형태로 변환하는 Keras 레이어이다.
이 레이어는 텍스트 데이터를 정수 인코딩로 변환한다.
출력모드는 int , output_sequence_length으로 길이를 5로 지정한다.(패딩)
vectorizer = tf.keras.layers.TextVectorization(output_mode='int', output_sequence_length=5)
2-2.텍스트 데이터에 adapt 적용
adapt() 메서드를 통해 TextVectorization 레이어가 텍스트 데이터에서 단어의 사전을 생성할 수 있도록 학습한다.
(텍스트의 각 단어를 고유한 인덱스로 매핑하는 단어 집합를 만든다.)
vectorizer.adapt(texts)
2-3.정수변환
texts를 텐서로 변환하여 TextVectorization 레이어에 입력합니다
TextVectorization 레이어는 각 문장의 단어들을 정수로 변환합니다.
vectorized_texts = vectorizer(tf.constant(texts))
728x90
'AI' 카테고리의 다른 글
[AI] 정제(Cleaning), 어간 추출(Stemming), 불용어(StopWord) (2) | 2024.12.26 |
---|---|
[AI] from tensorflow.keras.preprocessing.text import Tokenizer 오류 (0) | 2024.12.25 |
[AI]한국어 토큰화 (1) | 2024.12.25 |