더북(TheBook)

다음은 모델 훈련 실행 결과입니다.

Epoch 1/200
1/1 [==============================] - 0s 2ms/step - loss: 2.8920 - accuracy: 0.0714
Epoch 2/200
1/1 [==============================] - 0s 1ms/step - loss: 2.8903 - accuracy: 0.0714
...(중간 생략)...
Epoch 199/200
1/1 [==============================] - 0s 1ms/step - loss: 0.4413 - accuracy: 1.0000
Epoch 200/200
1/1 [==============================] - 0s 997us/step - loss: 0.4364 - accuracy: 1.0000
<tensorflow.python.keras.callbacks.History at 0x2388cf5ccc0>

정확도는 100%이고, 훈련이 반복될수록 손실은 줄어들고 있습니다. 즉, 모델 성능이 좋다는 것을 알 수 있습니다.

이제 생성된 모델을 사용하여 문장을 예측해 보겠습니다. 입력한 단어 이후에 오는 단어를 예측하는 함수를 생성합니다.

코드 10-69 단어 예측

def sentGen(model, tok, word, n): ------ 모델, 토크나이저, 입력 단어, 예측 단어 개수를 파라미터로 사용
    sent = ""
    word2 = word
    for _ in range(n): ------ 2회 반복
        encoded = tok.texts_to_sequences([word])[0]
        encoded = pad_sequences([encoded], maxlen=7, padding="pre")
        res = model.predict_classes(encoded)

        for w, i in tok.word_index.items():
            if i == res: ------ 예측 단어와 인덱스 단어가 동일할 경우 if 문 수행
                break
        word = word + " " + w
        sent = sent + " " + w
    sent = word2 + sent
    return sent
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.