[Project] Enphago - 한글 끝말잇기 AI 01. Open API 활용


Open API

끝말잇기에서 사용할 명사 리스트를 모으기 위해서는 한글 단어 사전의 API 가 필요했다. 그 중에서도 한글표준어대사전우리말샘 이라는 두 가지 선택지가 있었다. 처음에는 한글표준어대사전을 선택하였으나 우리말샘 API 가 단어의 유형을 조금 더 상세히 표현한다는 것을 깨닫고 우리말샘으로 넘어가게 되었다.

1

API 이용신청은 신청 즉시 승인되는 방식이어서 따로 시간이 들지 않았다.


XML 파싱

2

제공되는 Open API 는 위 사진과 같이 xml 형태여서 xml parsing 작업이 필요했다. 우선 이 API 를 간단히 활용하며 테스트 하기 위해 간단한 proto-type을 만들어보기로 했는데 역시 이런 작업에는 pythonbeautifulsoup 만한 게 없었다.

3

사실 python 을 직접 활용해 본 경험은 ps 나 코딩테스트에서 C++ 로 풀기 난해한 string 처리 문제를 풀어볼 때 밖에 없었고 다양한 라이브러리의 기능들만 어느정도 아는 수준이었는데 이번 기회를 통해 python 과 더욱 친숙해질 수 있을 것 같았다.

단어 유효성 검사

우선 끝말잇기에서 사용 가능한 단어의 규칙은 다음과 같았다.

  • 명사만 허용된다.
  • 표준어만 허용된다.
  • 북한어/외국어는 허용되지 않는다.
  • 합성어는 허용되지 않는다.
  • 고유명사는 허용되지 않는다.
  • 단어의 길이가 2 이상이어야 한다.

이 외에도 더 있을 수 있겠지만 우선 proto-type 에서 사용한 규칙은 이 정도이다.

아래는 APIpython 을 이용해 간단히 작성한 단어 유효성 검사 코드이다.

4

사용자가 입력한 단어는 위 코드를 통해 올바른 단어인지 판별할 수 있다.

그렇다면 AI 가 답할 단어는 어떻게 생성해내야 할까?


단어 리스트 생성

이 프로젝트의 AI 는 임의의 단어를 만들어낼 만큼의 고수준 AI 가 아니기 때문에 사전에 미리 단어 리스트를 만들어 주어야 한다. 위 API 에서는 단어를 통한 검색 뿐만 아니라 각 단어에 부여된 target-code 을 이용한 검색 또한 지원하기 때문에 1번 부터 끝까지 모든 target-code 를 참조하여 사전 API 내의 모든 단어를 탐색할 수 있었다. 이 단어들 중에서 위에서 만든 단어 유효성 검사를 통과한 단어만 리스트에 넣어주고 AI 는 이 리스트에서 사용자가 입력한 단어의 끝말로 시작하는 단어를 탐색하여 출력하면 될 것이다.

5

API 에서 target-code 는 약 500000번 까지 있었다. 이 모든 인덱스를 탐색하는 데에는 상당히 오랜시간이 걸렸다.

6

어쨌든 무사히 추출 성공!

0%