자연어 처리(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)
'NLP(자연어 처리)' 카테고리의 다른 글
자연어 처리(3) - 시퀀스배열_순환신경망 (0) | 2022.06.15 |
---|---|
자연어 처리(2) - 문장의 원-핫 인코딩, 단어 임베딩 (0) | 2022.06.15 |