연습 - 신경망을 사용하여 텍스트 감정 분석

완료됨

실제 테스트는 모델에 자신만의 텍스트를 입력하고 수행되는 상황, 즉 해당 텍스트에 표현된 감정의 정량화에 대한 정확도를 확인할 때 발생합니다. 이 단원에서는 텍스트 문자열을 입력으로 받아들이고, 모델에 전달하고, 감정 점수를 반환하는 Python 함수를 작성합니다. 그러면 이 함수를 사용하여 다양한 텍스트 문자열로 표현된 감정을 분석할 수 있습니다.

  1. 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 함수를 호출하여 감정에 대한 텍스트를 채점합니다.

  2. Notebook을 사용하여 다음 명령문을 실행합니다.

    analyze('Easily the most stellar experience I have ever had.')
    

    출력은 입력 텍스트에서 0.0~1.0의 숫자로 표현된 감정입니다. 모델의 평가에 동의할 수 있나요?

  3. 이제 다음 명령문을 시도해 보세요.

    analyze('The long lines and poor customer service really turned me off.')
    

    모델에서 이 텍스트에 표현된 감정을 어떻게 정량화하고 있나요?

마지막으로 자신만의 입력 문자열을 사용하여 모델을 테스트합니다. 결과가 완전하지는 않지만 모델이 감정을 정량화하는 데 적합하다는 것을 알 수 있습니다. 모델이 영화 리뷰를 사용하여 학습되었지만, 영화 리뷰를 분석하는 것으로만 제한되지는 않습니다. 영화에 대해 좋아요와 싫어요를 표현하는 언어와 다른 관계없는 주제에 대한 감정을 표현하는 단어 사이에는 고유한 유사성이 있으므로 의미가 있습니다.