[Project] 한글 끝말잇기 AI 안드로이드 앱 05. 학습하는 AI


개요

Enphago 는 게임을 진행할수록 강력해지고 이기기 힘들어진다. 어떻게 그럴 수 있는지 한 번 살펴보자.


새로운 단어 학습

Enphago3장 에서 언급했던 것처럼 초기에 기본적인 단어 리스트를 학습한 상태이다. 하지만 게임이 진행될 수록 enphago 는 이 리스트를 업데이트 한다.

0

따라서 최소한 플레이어가 아는 단어를 enphago 가 모르는 상황은 존재하지 않는다. 게임 횟수가 늘어날 수록 enphago 는 점점 더 많은 단어들을 알게 된다.


한 방 단어 학습

Enphago 학습의 꽃이라고 할 수 있다. 한 방 단어들을 학습하여 이를 우선적으로 내뱉는다. 한 방 단어를 학습하는 타이밍은 다음과 같이 두 가지가 있다.

  • Enphago 가 승리했을 때
  • Enphago 가 패배했을 때

Enphago 가 승리했을 때는 3장 에서 소개했듯이 힌트를 표시하기 위해 자신의 단어 리스트를 검색한다. 하지만 enphago 본인도 적절한 단어를 찾지 못했을 시에는 자신이 말한 단어를 한 방 단어 로 인식하고 업데이트 한다.

반면에 enphago 가 패배했을 때는 플레이어가 한 방 단어를 말했다고 인식한다. enphago 가 패배한 상황은 해당 단어가 여지 없이 한 방 단어라는 의미이기 때문에 바로 리스트를 업데이트한다.

1

Enphago 는 단어를 위와 같은 형태의 데이터 로 저장한다.

  • word: 단어
  • first: 단어의 첫 글자
  • end: 한 방 단어 여부

여기서 enphago 가 한 방 단어를 발견하면 자신의 DB 에서 해당 단어의 end 값을 true 로 바꾼다. 그리고 추후 단어를 대답할 때 이 end 값을 확인하여 true 인 것을 우선적으로 내뱉는다.

2

따라서 게임 횟수가 늘어남에 따라 점점 enphago 를 이기기 힘들어진다. 학습이 많이 진행되면 아마 몇 턴 가지 못하고 한 방 단어가 등장하여 게임이 빨리 끝날 것이다.


마무리

이렇게 enphago 의 학습 기능까지 소개하여 모든 포스팅이 끝났다. 전적 기록과 같은 부가적인 기능에 대해선 따로 포스팅 하지 않았다.

현재 enphago 는 구글 플레이 스토어 게시 대기 중이다.

추후에 추가할 기능은 다음과 같다.

Enphago 끼리 게임을 진행하여 수많은 한 방 단어 를 스스로 학습하기

어플 내에서 enphago 학습시키기 기능을 추가해서 게임 난이도를 직접 올릴 수 있게 할 생각이다. 초기에 c언어 로 구현했을 당시에는 실제로 구현했던 기능이다. 안드로이드 앱에도 어렵지 않게 탑재할 수 있을 것 같다.


Github 저장소: https://github.com/yjyoon-dev/enphago-android

0%