본문 바로가기
NLP(자연어 처리)

자연어 처리(1) - 토큰화

by pumkinni 2022. 6. 15.

자연어 처리(1) - 토큰화

 텍스트의 토근화, Bag-of-Words에 대해 알아보고 코드를 작성해보자.

   ex) text_to_word_sequence(), .word_counts, .document_count, .word_docs, .word_index


자연어 처리

 음성이나 텍스트를 컴퓨터가 인식하고 처리하는 것

 

텍스트의 토큰화

 입력된 텍스트를 잘게 나누는 과정

  • 토큰(token) : 텍스트(문장)를 단어별, 문장별, 형태소별로 나누어져서 의미가 있는 단위

1) 단어단위 토큰화 - text_to_word_sequence()

# 케라스의 텍스트 전처리와 관련한 함수중 text_to_word_sequence 함수를 불러 옵니다.
from tensorflow.keras.preprocessing.text import text_to_word_sequence
 
# 전처리할 텍스트를 정합니다.
text = '해보지 않으면 해낼 수 없다'

# 해당 텍스트를 토큰화 합니다.
result = text_to_word_sequence(text)
print("\n원문:\n", text)
print("\n토큰화:\n", result)

단어 단위 토근화 결과

 

2) Bag-of-Words

 같은 단어끼리 따로 따로 가방에 담은 뒤 각 가방에 몇 개의 단어가 들어있는지를 세는 기법

  • 단어 빈도 확인
  • 중요 단어 파악
# 단어 빈도수 세기

# 세 개의 문장을 정의합니다.
docs = ['먼저 텍스트의 각 단어를 나누어 토큰화 합니다.',
       '텍스트의 단어로 토큰화 해야 딥러닝에서 토큰화 인식됩니다.',
       '토큰화 한 결과는 딥러닝에서 사용 할 수 있습니다.',
       ]
# 토큰화 함수를 이용해 전처리 하는 과정
from tensorflow.keras.preprocessing.text import Tokenizer

token = Tokenizer()             # 토큰화 함수 지정
token.fit_on_texts(docs)        # 토큰화 함수에 문장 적용

# 각 단어 빈도수 : .word_counts
print("\n단어 카운트:\n", token.word_counts) 
# Tokenizer()의 word_counts 함수는 순서를 기억하는 OrderedDict클래스를 사용합니다.

# 총 문장 수 : .document_count
print("\n문장 카운트: ", token.document_count)

# 각 단어가 몇개의 문장에 포함되어 있는가 : .word_docs
# 출력되는 순서는 랜덤
print("\n각 단어가 몇개의 문장에 포함되어 있는가:\n", token.word_docs)

# 각 단어에 매겨진 인덱스 값 : .word_index
print("\n각 단어에 매겨진 인덱스 값:\n",  token.word_index)

출력 결과