연습 - 신경망을 사용하여 텍스트 감정 분석
실제 테스트는 모델에 자신만의 텍스트를 입력하고 수행되는 상황, 즉 해당 텍스트에 표현된 감정의 정량화에 대한 정확도를 확인할 때 발생합니다. 이 단원에서는 텍스트 문자열을 입력으로 받아들이고, 모델에 전달하고, 감정 점수를 반환하는 Python 함수를 작성합니다. 그러면 이 함수를 사용하여 다양한 텍스트 문자열로 표현된 감정을 분석할 수 있습니다.
Notebook의 끝에 있는 셀에 다음 코드를 추가하고 해당 셀을 실행합니다.
import string import numpy as np def analyze(text): # Prepare the input by removing punctuation characters, converting # characters to lower case, and removing words containing numbers translator = str.maketrans('', '', string.punctuation) text = text.translate(translator) text = text.lower().split(' ') text = [word for word in text if word.isalpha()] # Generate an input tensor input = [1] for word in text: if word in word_dict and word_dict[word] < top_words: input.append(word_dict[word]) else: input.append(2) padded_input = sequence.pad_sequences([input], maxlen=max_review_length) # Invoke the model and return the result result = model.predict(np.array([padded_input][0]))[0][0] return result
이러한 명령문은 문자열을 입력으로 받아들이고, 해당 문자열에 표현된 감정을 정량화하는 0.0~1.0의 숫자를 반환하는
analyze
라는 함수를 정의합니다. 숫자가 높을수록 더 긍정적인 감정이 됩니다. 이 함수는 입력 문자열을 정리하고, 입력 문자열을load_data
함수로 만든 사전의 단어를 참조하는 정수 목록으로 변환한 다음, 마지막으로 모델의predict
함수를 호출하여 감정에 대한 텍스트를 채점합니다.Notebook을 사용하여 다음 명령문을 실행합니다.
analyze('Easily the most stellar experience I have ever had.')
출력은 입력 텍스트에서 0.0~1.0의 숫자로 표현된 감정입니다. 모델의 평가에 동의할 수 있나요?
이제 다음 명령문을 시도해 보세요.
analyze('The long lines and poor customer service really turned me off.')
모델에서 이 텍스트에 표현된 감정을 어떻게 정량화하고 있나요?
마지막으로 자신만의 입력 문자열을 사용하여 모델을 테스트합니다. 결과가 완전하지는 않지만 모델이 감정을 정량화하는 데 적합하다는 것을 알 수 있습니다. 모델이 영화 리뷰를 사용하여 학습되었지만, 영화 리뷰를 분석하는 것으로만 제한되지는 않습니다. 영화에 대해 좋아요와 싫어요를 표현하는 언어와 다른 관계없는 주제에 대한 감정을 표현하는 단어 사이에는 고유한 유사성이 있으므로 의미가 있습니다.