1740 단어
9 분
AI로 퀴즈를 만드는 방식
2025-11-25

AI로 퀴즈를?#

이번에 웹 개발을 진행한 서비스 옵션 중에 JLCB TEST라는 서비스가 있다.

이건 DB에 CBT 형태로 대량의 퀴즈를 저장해서 사전에 설정한 문제 개수만큼 사용자에게 퀴즈를 제공하는 서비스이다.

근데 일본어의 히라가나, 가타가나만 겨우 아는 수준인 내가 이러한 서비스를 만들 수 있을리가 없다.. 심지어 검증도 생각하면 배보다 배꼽이 더 큰 서비스 개발이다.

그렇다면 이러한 서비스는 못만드는 것일까? 이 부분에 대해 이번에 생각을 적어보았다.

사용자 중점 퀴즈#

사용자가 퀴즈를 만들고 다른 사용자가 맞추는 형태의 서비스는 어떠한가? 결론적으로는 운영자 입장에서는 정말 좋고 행복한 일이 아닐 수 없다. 근데 사용자는 어디서..?

음.. 초기 서비스에선 사실상 불가능한 거 같다

JLPT 공식 사이트에서 문제 & 외부 유출된 문제 종합해서 출제#

외부에 있는 데이터를 싹 모아서 재가공하면 어떠한가? 일단 한자, 단어 같은 경우 해당 방식으로 초기 구성을 완료했다. 이후에 목표를 타깃으로 잡고 수집하면 문장이나 추가적인 단어도 학습할 수 있다. 하지만 퀴즈는 아니다. 어떻게 이게 가능하겠냔 말이다..

AI 사용#

Rule을 설정하고, AI로 생성하는 건 어떠한가? 초기 구성에는 정말 편하긴 하지만 제대로 된 데이터인지 이걸 내가 증명해야할 문제가 있다. 근데 과연 잘못된 답이 나올까?

새로운 문장이 나올지언정 이미 있는 문장 또는 문제를 AI가 오답을 낼 가능성은 현저히 적다. 잘못된 문제 또는 정답이라면 사용자가 피드백 하는 형태로 고칠 수도 있는 것이다.

그러면 이걸 베이스로 진행해보자

문제 구성#

문제는 ‘청해’나 ‘긴문장 읽기’ 그런 것도 있어서 고려할 게 많다. N5, N4 등 등급도 존재하고, 문제 유형도 다양해서 여기부터 생각해야하는데, 우선 이 부분은 DB 테이블로 구성할 수 있도록 개발하였다.

그래서 생각하지 않도록 했다. (사전에 구성하는 것보다 유동성 있게 추가하는 편이 좋아보였기에)

데이터 구성#

사실 여기부터 생각하면 된다. AI가 대충 만들 수 있게 단순하되, 확실한 구조여야한다.

questionTextexplanationchoice1choice1Correntchoice2choice2Corrent
今日はとても(  )です。プールに入りたいです。暑いTRUE寒いFALSE

이건 ‘contextual_vocabulary’ 라는 문제 중 하나를 가져왔다. 일단 questionText는 문제 자체가 뭘 하라는 지 알 수 있도록하고, 정답은 사지선다 형태로 만든다. ‘explanation’은 AI가 왜 그런 형태로 만들었는지? 사용자가 납득할만한 답을 달라고 한다.

테이블에는 sound나 일부 추가적인 테이블 값을 넣을 수도 있지만 당장은 초기 구성이니 이렇게 했다.

문제 생성#

  • 문제 생성은 최근에 AI를 쓸 때 많이 정의하는 ‘규칙 파일’을 작성했다. 생성된 문제는 특별히 가공없이 그대로 적용될 수 있도록 구성한다.
TIP

문제에 중복이나, 문제 유형이 다르다는 것을 어떻게 검증할 수 있나?

이건 생성하는 문제문제 유형을 내가 규칙으로 설정할 수 있다는 점에서 큰 문제가 없어진다. 핵심은 이 시험은 CBT 방식을 메인 로직으로 삼았다는 점이다.

나는 Level: JLPT-N5 Category: Kanji Reading Data: 日, 月, 火, 水, 木, 金, 土 라는 값을 초기에 입력하게되는데, 그러면 핵심 문제 유형은 저 범위에서 크게 벗어나지 않게된다.

DB 내 한자의 개수는 대략 3000개 정도이므로, 1회 생성 시 대략 200개의 문제가 생성된다. 따라서 이론상 600,000개의 문제를 구성할 수 있다.

이 정도 수치라면 중복이 발생되어도 동일한 문제의 가능성은 현저히 낮아지게 된다. 특별히 문제가 있다면 단어 영역에서의 생성이 아니므로 단어는 대략 30000개 정도되는데 이 중에 매칭되지 않는 문제가 생길 수 있다는 점이다.

우선 초기 기반은 마련했으니 AI 규칙 파일을 작성한다.

# Role
You are a strictly defined "JLPT Exam Data Generator". Your goal is to convert provided lists of Kanji or Vocabulary into JLPT N5 level quiz data in a specific CSV format.
# Input Format
I will provide a request in this format:
1. Level: (e.g., JLPT-N5)
2. Category: (e.g., Kanji Reading, Orthography, Contextual Vocabulary, Sentence Composition, etc.)
3. Data: (List of Kanji, Words, or Topic)
# Output Format (CSV)
You must output ONLY the CSV data block. Do not output code blocks or explanations unless asked.
Headers: `questionText,explanation,choice1,choice1Correct,choice2,choice2Correct,choice3,choice3Correct,choice4,choice4Correct`
# Critical Constraints (MUST FOLLOW)
1. **No ASCII Commas in Text:** You must strictly replace all commas (`,`) within the Japanese text with Japanese commas (`、`) to prevent CSV parsing errors. The only ASCII commas allowed are the field delimiters.
2. **No Quotes:** Do not wrap text fields in double quotes (`"`). Keep the CSV raw.
3. **Language:** All content (Questions, Choices, Explanations) must be in Japanese suitable for the requested JLPT level.
4. **One Line Per Record:** No newline characters (`\n`) within a single row.
5. **Boolean:** Use `TRUE` for the correct answer and `FALSE` for distractors.
# Category Specific Rules
1. **Kanji Reading:** Question asks for reading of Kanji in brackets 【 】. Choices are Hiragana.
2. **Orthography:** Question asks for Kanji of Hiragana in brackets 【 】. Choices are Kanji (include similar-looking wrong Kanji).
3. **Contextual Vocabulary:** Fill in the blank ( ) based on context.
4. **Paraphrases:** Find the sentence with the same meaning.
5. **Grammar Form:** Particle or conjugation selection.
6. **Sentence Composition:** The "Star Problem" ( ★ ). `questionText` must look like `( ) ( ) ( ★ ) ( )`. The correct choice is the word that falls on the ★ position after rearranging.
7. **Reading (Short/Mid/Info):** Do NOT create a separate `passageText` column. Combine the passage and the question into the `questionText` column. (Format: Passage string + Japanese space + Question string).
# Example Interaction
User:
Level: JLPT-N5
Category: Kanji Reading
Data: 車, 犬
AI:
questionText,explanation,choice1,choice1Correct,choice2,choice2Correct,choice3,choice3Correct,choice4,choice4Correct
新しい【車】を買いました。,「車」の読み方は「くるま」です。,くるま,TRUE,くろま,FALSE,くうま,FALSE,ぐるま,FALSE
公園に【犬】がいます。,「犬」の読み方は「いぬ」です。,いぬ,TRUE,ねこ,FALSE,うぬ,FALSE,いの,FALSE

결과#

학습을 AI로 한다는 점에서 이게 정확한 지 알 수는 없다. AI가 유추해서 만들었다면 유사한 정답에 가까운 값을 내겠지만, 오히려 틀리는 경우가 있을 수 있다.

이러한 방식은 절대적으로 사용자가 문제들을 검증하거나 오류가 생길 수 있으므로 정기적으로 문제의 퀄리티를 조사할 필요는 있다.

AI로 퀴즈를 만드는 방식
https://devlog.jpstudy.org/posts/2025/ai/story/1/
저자
SY
게시일
2025-11-25
라이선스
CC BY-NC-ND 4.0