728x90
0. 토큰화
문장을 분석하기 위해 텍스트 데이터를 더 작은 단위로 나누는 과정
단어(Token) 또는 문장 단위로 텍스트를 나누며, 자연어 처리(NLP)의 전처리 단계로 사용한다.
1. TensorFlow로 토큰화(단어)
1-1. TensorFlow 상수 텐서화
변경되지 않는 데이터를 저장하기 위해 TensorFlow에서 제공하는 데이터 구조인 TensorFlow 상수 텐서로 데이터를 저장한다. (한 번 정의되면 수정할 수 없다.)
#tf.constant(value, dtype=None, shape=None, name=None)
import tensorflow as tf
text = tf.constant("Hello, my name is asa! How are you?")
1-2.텐서?
텐서는 다차원 배열을 확장한 형태이고 크기와 차원(dimension)을 가지고 있으며, 각 차원은 특정한 방향으로 데이터를 확장한 배열을 의미합니다. 주로 고차원일때 효율적으로 계산할수있습니다.
scalar = tf.constant(5)
vector = tf.constant([1, 2, 3])
matrix = tf.constant([[1, 2], [3, 4]])
tensor_3d = tf.constant([[[1], [2]], [[3], [4]]])
1-3.정규 표현식
문자열 텐서에서 정규 표현식(Regex)을 사용해 특정 패턴을 다른 문자열로 대체합니다.
그후 문자열을 지정된 구분자를 기준으로 분리하여 단어 토큰화를 수행합니다.
# 특수 문자 제거
text = tf.strings.regex_replace(text, r'[!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n]', '')
# 단어로 분리
tokens = tf.strings.split(text)
1-4.NumPy 배열로 변환,출력
텐서를 읽기쉽게 Numpy 배열로 변환하여 출력한다.
문자열 텐서의 요소는 b'...' 형식으로 표시된다.(바이트 문자열이라는뜻)
import tensorflow as tf
#상수 텐서
text = tf.constant("Hello, my name is asa! How are you?")
# 특수 문자 제거
text = tf.strings.regex_replace(text, r'[!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n]', '')
# 단어로 분리
tokens = tf.strings.split(text)
# 결과 출력
# NumPy 배열로 변환해 확인
print(tokens.numpy())
#결과
#[b'Hello,' b'my' b'name' b'is' b'asa!' b'How' b'are' b'you?']
2.TreebankWordTokenizer(단어)
주로 영어 텍스트를 단어 단위로 분리하는 데 사용하는 토큰화 도구이고
구두점이나 특수 문자를 단어와 별도로 분리합니다.
from nltk.tokenize import TreebankWordTokenizer
tokenizer = TreebankWordTokenizer()
text = "Hello, my name is asa! How are you?"
print(tokenizer.tokenize(text))
#결과
#['Hello', ',', 'my', 'name', 'is', 'asa', '!', 'How', 'are', 'you', '?']
2-1.NLTK(Natural Language Toolkit)
자연어 처리(NLP) 라이브러리로 텍스트 분석, 언어 모델링, 문법 분석, 토큰화, 형태소 분석 등 자연어 처리 작업을 수행할 때 유용한 다양한 기능을 갖추고 있습니다.
3.문장 토큰화
많은 자연어 처리 작업은 문장 단위로 작업을 시작한다.
문장 단위로 나누어 놓으면, 각 문장의 특성을 더 잘 파악하고 분석할 수 있다. 예를 들어, 텍스트를 문장 단위로 나누어 감성 분석을 할 수 있다.
3-1.NLTK sent_tokenize
NLTK의 sent_tokenize는 마침표(.), 물음표(?), 느낌표(!)와 같은 구두점으로 문장을 구분합니다.
from nltk.tokenize import sent_tokenize
text = "Hello! How are you? I hope you're having a great day. Let's learn NLP with NLTK."
print(sent_tokenize(text))
#결과
#['Hello!', 'How are you?', "I hope you're having a great day.", "Let's learn NLP with NLTK."]
728x90
'AI' 카테고리의 다른 글
[AI] kss pip install 실패 오류 (0) | 2024.12.23 |
---|---|
[AI] Stable Diffusion의 CheckPont, VAE란 뭘까? (1) | 2024.12.21 |
[AI] Diffusion 모델이 뭐지? (1) | 2024.12.21 |