더북(TheBook)

데이터에서 유의미한 단어 토큰만 주어진 text에서 선별합니다. I, my, me, over, on 등 조사나 접미사 같은 불용어(stopwords)는 제거한 후 사용해야 하지만, 예제의 데이터셋은 데이터양이 많지 않으므로 생략합니다.

 

In [4]:

def process_text(text):

    # text에서 구두점을 삭제합니다
    nopunc = [char for char in text if char not in string.punctuation]
    nopunc = ''.join(nopunc)

    # text에서 무의미한 단어(접미사, 조사 등)는 삭제합니다
    cleaned_words = [word for word in nopunc.split()
                     if word.lower() not in stopwords.words('english')]
    return cleaned_words

# process_text 함수를 적용하여 데이터 세트의 텍스트 데이터를 토큰화합니다
df['text'].head().apply(process_text)

# text를 토큰 수의 행렬로 변환합니다
from sklearn.feature_extraction.text import CountVectorizer
messages_bow = CountVectorizer(analyzer=process_text).fit_transform
(df['text'])

# 데이터를 80%의 training과 20%의 testing 데이터셋으로 분리합니다
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(messages_bow, 
df['label_num'], test_size = 0.20, random_state = 0)

# 다항식 나이브베이즈 모델을 만들고 훈련시킵니다
from sklearn.naive_bayes import MultinomialNB
classifier = MultinomialNB()
classifier.fit(X_train, y_train)

# 데이터셋 분류에 대한 예측 및 실제 관측 값을 보여 줍니다
print(classifier.predict(X_train)) # 예측 값 출력
print(y_train.values)              # 실제 관측 값 출력

[1 0 1 0]

[1 0 1 0]

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.