🏁 λ¨Έμ‹ λŸ¬λ‹ | λ”₯λŸ¬λ‹/ν…μŠ€νŠΈ 뢄석

[ν…μŠ€νŠΈ 뢄석] 2-1. ν…μŠ€νŠΈ μ „μ²˜λ¦¬ - ν΄λ Œμ§•, 토큰화

xod22 2022. 2. 20. 00:36
728x90

2022.02.19 - [λ¨Έμ‹ λŸ¬λ‹ | λ”₯λŸ¬λ‹/ν…μŠ€νŠΈ 뢄석] - [ν…μŠ€νŠΈ 뢄석] 1. ν…μŠ€νŠΈ λΆ„μ„μ˜ 이해

 

[ν…μŠ€νŠΈ 뢄석] 1. ν…μŠ€νŠΈ λΆ„μ„μ˜ 이해

ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄μ„œ ν…μŠ€νŠΈ 뢄석을 μ ‘ν•΄λ³Ό κΈ°νšŒκ°€ μžˆμ—ˆλŠ”λ° μ™„μ „ν•œ 이해λ₯Ό ν•˜κ³  μ‚¬μš©ν•œ 것은 μ•„λ‹ˆλΌ 였λ₯˜λ„ 많이 μ ‘ν•΄λ³΄μ•˜κ³  κ·Έλž˜μ„œ λ”μš± μ°¨κ·Όμ°¨κ·Ό ν…μŠ€νŠΈ 뢄석에 λŒ€ν•΄ 곡뢀해보렀고 ν•©λ‹ˆλ‹€! 텍

xod22.tistory.com

μ €λ²ˆ ν¬μŠ€νŒ…μ—μ„œ ν…μŠ€νŠΈ λΆ„μ„μ˜ 이해에 λŒ€ν•΄ κ°„λ‹¨νžˆ μ μ–΄λ³΄μ•˜λŠ”λ°μš”!

μ˜€λŠ˜μ€ ν…μŠ€νŠΈ λΆ„μ„μ˜ ν”„λ‘œμ„ΈμŠ€ 쀑 첫번째인 ν…μŠ€νŠΈ μ „μ²˜λ¦¬ 및 μ •κ·œν™”μ— λŒ€ν•΄ 곡뢀해보렀고 ν•©λ‹ˆλ‹€!


λ¬Έμ„œμ—μ„œ 단어 기반으둜 ν•˜μ—¬ ν”Όμ²˜λ₯Ό 뽑은 후에 ν”Όμ²˜μ— 벑터 값을 λΆ€μ—¬ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€.

ν•˜μ§€λ§Œ ν”Όμ²˜μ— 벑터값을 λΆ€μ—¬ν•˜λŠ” μž‘μ—…μ„ ν•˜κΈ°μ „! λ³Έ 데이터에 λŒ€ν•œ μ „μ²˜λ¦¬ μž‘μ—…μ΄ ν•„μˆ˜μ μ΄λ‹€..!

 

ν…μŠ€νŠΈ λΆ„μ„μ˜ μ „μ²˜λ¦¬ μž‘μ—…μ„ μ •λ¦¬ν•΄λ³΄μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

1. Cleansing(ν΄λ Œμ§•)
2. Tokenization(토큰화)
3. 필터링 / stopwords(λΆˆμš©μ–΄) 제거 / 철자 μˆ˜μ •
4. Stemming & Lemmatization

1. Cleansing(ν΄λ Œμ§•)

 

: ν…μŠ€νŠΈ λΆ„μ„μ—μ„œ 였히렀 λ°©ν•΄κ°€ λ˜λŠ” λΆˆν•„μš”ν•œ 문자 등을 μ œκ±°ν•˜λŠ” μž‘μ—…μ„ λ§ν•œλ‹€!

예λ₯Όλ“€μ–΄ μΈν„°λ„·μ—μ„œ ν¬λ‘€λ§ν•œ 데이터가 μžˆλ‹€κ³  ν–ˆμ„ λ•Œ, html 기호 등을 사전에 μ‚­μ œν•˜λŠ” μž‘μ—…μ΄ 이에 속함..!

 

2. Tokenization(토큰화)

 

: λ‚ κ²ƒμ˜ ν…μŠ€νŠΈλ₯Ό λ¬Έμž₯별, λ‹¨μ–΄λ³„λ‘œ λ‚˜λˆ„κΈ°..!

ν† ν°ν™”μ˜ μœ ν˜•μ€ 크게 두가지가 μžˆλ‹€.

 

1) λ¬Έμž₯ 토큰화 : λ¬Έμ„œμ—μ„œ λ¬Έμž₯을 뢄리

2) 단어 토큰화 : λ¬Έμž₯μ—μ„œ 단어λ₯Ό ν† ν°μœΌλ‘œ 뢄리

 

즉 λ¬Έμ„œ->λ¬Έμž₯, λ¬Έμž₯->단어

 

 

~νŒ¨ν‚€μ§€ μž„ν¬νŠΈ~

from nltk import sent_tokenize
import nltk
nltk.download('punkt')

 

~λ¬Έμž₯ 토큰화~

: λ¬Έμž₯ ν† ν°ν™”λŠ” 주둜 λ¬Έμž₯의 λ§ˆμ§€λ§‰μ„ λœ»ν•˜λŠ” 기호λ₯Ό κΈ°μ€€μœΌλ‘œ μž‘μ—…μ΄ μ§„ν–‰λœλ‹€..!

λ¬Έμž₯의 λ§ˆμ§€λ§‰μ„ μƒμ§•ν•˜λŠ” κΈ°ν˜Έλ‘œλŠ” λŒ€ν‘œμ μœΌλ‘œ λ§ˆμΉ¨ν‘œ(.)와 κ°œν–‰λ¬Έμž(\n) 등이 μžˆλ‹€. 

λ˜ν•œ μ •κ·œν™” ν‘œν˜„μ‹μ— λ”°λ₯Έ λ¬Έμž₯ 토큰화도 κ°€λŠ₯ν•˜λ‹€.

text_sample = '''The Matrix is everywhere its all around us,
here even in this room. you can see it out your window or on your television.
you feel it when you go to work, or go to church or pay your taxes.'''

# sent_tokenize(text="μž…λ ₯ν•  ν…μŠ€νŠΈ")
sentences = sent_tokenize(text=text_sample)

print("κ²°κ³Ό :", sentences)

# textκ°€ λͺ‡κ°œμ˜ λ¬Έμž₯으둜 λ˜μ–΄μžˆλŠ”μ§€ 개수λ₯Ό μ„Έμ€Œ
print("λ¬Έμž₯ 개수 :", len(sentences))

print둜 ν…μŠ€νŠΈλ₯Ό 확인해보면, λ¬Έμž₯λ³„λ‘œ 뢄리가 λ˜μ–΄ λ¦¬μŠ€νŠΈμ— λ‹΄κ²¨μžˆλŠ” 것을 μ•Œ 수 μžˆλ‹€!

 

 

~단어 토큰화~

: 단어 ν† ν°ν™”λŠ” λ¬Έμž₯을 λ‹¨μ–΄λ‘œ 토큰화 함을 μ˜λ―Έν•œλ‹€.

κΈ°λ³Έμ μœΌλ‘œλŠ” 곡백, 콀마(,), λ§ˆμΉ¨ν‘œ(.), κ°œν–‰λ¬Έμž 등을 κΈ°μ€€μœΌλ‘œ 토큰화 μ‹œν‚¨λ‹€.

from nltk import word_tokenize

sentence = "The Matrix is everywhere its all around us, here even in this room"
words = word_tokenize(sentence)

print(type(words))
print("κ²°κ³Ό :", words)

곡백을 κΈ°μ€€μœΌλ‘œ 각 단어듀이 λ¦¬μŠ€νŠΈμ— 담겨 λ‚˜νƒ€λ‚˜κ³  μžˆλŠ” 것을 확인할 수 μžˆλ‹€.

 

 

~λ¬Έμž₯ 토큰화와 단어 ν† ν°ν™”μ˜ κ²°ν•©~

from nltk import word_tokenize, sent_tokenize

#ν•¨μˆ˜ 생성
def tokenize_text(text):
    
    #λ¬Έμž₯λ³„λ‘œ 뢄리
    sentences = sent_tokenize(text)
    
    #λΆ„λ¦¬λœ λ¬Έμž₯별 단어 토큰화
    word_tokens = [word_tokenize(sentence) for sentence in sentences]
    
    return word_tokens

#ν•¨μˆ˜μ— text_sample을 λ„£μ–΄μ€Œ
word_tokens =  tokenize_text(text_sample)

#λ°˜ν™˜κ°’ word_tokens 좜λ ₯
print(type(word_tokens), len(word_tokens))
print(word_tokens)

3개의 λ¬Έμž₯듀이 각각 단어 ν† ν°ν™”λ˜μ–΄ ν•˜λ‚˜μ˜ λ¦¬μŠ€νŠΈμ— λ‹΄κ²¨μžˆμŒμ„ 확인할 수 μžˆλ‹€!

-> μ„Έκ°œμ˜ λ¬Έμž₯μ΄λ―€λ‘œ μ„Έκ°œμ˜ 리슀트..!

728x90