다음은 모델 훈련 실행 결과입니다.
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