Jev를 사용해 AI가 작성한 듯한 글을 판별하는 결과
요약
본 기사는 AI가 생성한 듯 부자연스러운 표현을 판별하는 방법론을 제시합니다. 'Jev'라는 도구를 사용하여 문장 단위로 분석하며, 특히 주어의 생략이나 비유적 표현('발자국이 남는다') 등 AI 특유의 어색함을 찾아냅니다. 실제 PR 설명문을 예시로 보여주며 수정 전후를 비교하고, Claude와 다른 AI 모델을 활용한 검증 과정도 공유합니다.
핵심 포인트
- AI 생성문의 부자연스러운 표현(비문) 판별 방법론 제시
- Jev 도구를 이용해 문장 단위의 후보군 추출 및 분석
- 주어 생략이나 비유적 표현 등 AI 특성 개선 사례 공유
- Claude Code 사용 시 토큰 소비량 관리가 중요함
여기서 판별하는 것은, 문장이 AI 생성인지 아닌지가 아니라, AI 생성문에 나타나기 쉬운 부자연스러운 표현이 포함되어 있는지 여부입니다.
글쓰는 주어(口)는 스토어용 앱과 공용으로 사용되기 때문에, 그쪽 기록에도 같은 발자국이 남습니다.
AI가 출력한 설명문을 읽다가 혼란스러웠던 경험은 없으신가요?
'주어(口)'가 무엇이고, '발자국이 남는다'는 것이 어떻게 되는지 알 수 없습니다. 이 문장을 고치면 다음과 같습니다.
글쓰기 처리는 스토어용 앱과 공용으로 사용되기 때문에, 스토어용 앱의 Sentry에도 같은 기록이 도착합니다.
'주어(口)'는 Cookie에 쓰기 처리하는 것을 의미했고, '발자국이 남는다'는 것은 Sentry에 기록이 도착한다는 것이었습니다.
이런 문장은 검색으로는 찾을 수 없어서, 문장을 하나씩 Jev로 판별하고 있습니다.
이 글에서는 Jev에게 보낸 6가지 질문과, 실제 PR 설명문을 고치기 전과 고친 후를 나란히 놓은 것을 게재합니다. 앱 종류는 가상의 것으로 대체했지만, 표현 방식은 원래 그대로입니다.
수정 전 설명문
로그인 실패를 조사하기 위해 오류 기록을 늘린 PR입니다.
### 통신이 끊겼을 때의 동기화 실패도 남는다
통신 자체가 끊긴 경우, 원인 에러는 브라우저 기본 문구로 되어 있어, 문구만으로 일괄 삭제하는 설정에 걸려 기록 자체가 사라지고 있었습니다. 버릴 수 없는 문구를 고정하고, 응답이 돌아온 상의 실패인지, 통신 자체의 실패인지를 구별하여 보냅니다. 응답이 돌아오면 번호도 붙입니다.
### 로그인 알림과 Cookie 쓰기 발자국
...
Jev에게는 문장과 질문을 보냅니다. 돌아오는 것은, 질문에 부합하는 확률입니다. 임계치 이상의 문장을 후보로 삼습니다.
| 판별 | 질문 내용 | 임계치 |
|---|---|---|
| 주체가 쓰여지지 않음 | 누가, 또는 무엇이 그 동작을 하는지, 그 문장에도 앞 문장에도 쓰여 있지 않아, 독자가 추측해야 하는 동사가 있는가 | 0.5 |
| ... | ||
| 어떤 질문에도 해당하지 않을 경우의 설명을 첨부하고 있습니다. 예를 들어 '사물에 사람의 동작을 시키는 것'에는, 'API가 응답을 반환한다', '테스트가 통과한다'와 같은 기술 문서의 정해진 표현은 포함하지 않도록 작성했습니다. |
8문장 중 6문장이 후보로 올라왔습니다. 확률이 높은 3건입니다.
| 확률 | 판별 | 문장 |
|---|---|---|
| 0.73 | 주체가 쓰여지지 않음 | 버릴 수 없는 문구를 고정하고, 응답이 돌아온 상의 실패인지, 통신 자체의 실패인지를 구별하여 보냅니다. |
| ... | ||
| 후보로 올라온 문장을 Claude에게 수정하게 했습니다. 더불어, 경위를 모르는 다른 AI에게 본문만 읽게 하여 의미가 파악되지 않은 부분도 수정하게 했습니다. |
| 판별 | 수정 전 | 수정 후 |
|---|---|---|
| 명사에 평소 붙지 않는 동사를 붙임 | 글쓰는 주어(口)는 스토어용 앱과 공용으로 사용되기 때문에, 그쪽 기록에도 같은 발자국이 남습니다. | 글쓰기 처리는 스토어용 앱과 공용으로 사용되기 때문에, 스토어용 앱의 Sentry에도 같은 기록이 도착합니다. |
| ... | ||
| '발자국'은 '기록'으로, '주어(口)'는 '처리'로 바뀌었고, '회원 앱은', 'Cookie를 쓰기 처리하는 것이'라는 주어가 들어갔습니다. |
2가지가 있습니다.
첫 번째는, 제목이 판별되지 않는 것입니다. 이 글의 제목은 처음에 'Jev에게 문장 하나씩 묻기'였습니다. 도구에 '묻다'라고 쓰는 것은 AI 같다며 지적받아 수정했습니다. 스크립트는 제목을 Jev에게 보내지 않았습니다. 본문으로 보내봐도, '도구를 사람처럼 다루고 있다'는 이유로는 후보로 올라오지 않았습니다.
두 번째는, 토큰 소비입니다. 비교적 비용이 적게 드는 Jev지만, Claude Code의 답변 전체를 자동으로 검사하게 했더니, 소비가 너무 커서 무료 토큰을 다 써버릴 것 같아 중단했습니다. 지금은 PR 설명문처럼 사람에게 읽어주는 글만 검사하고 있습니다.
이 글의 초안도 Claude에게 쓰게 했기 때문에, 같은 6가지 질문으로 판별했습니다. 47문장 중 후보는 26건이었고, 확인하여 수정한 것은 6문장이었습니다.
| 판별 | 수정 전 | 수정 후 |
|---|---|---|
| 사물에 사람의 동작을 시키는 것 | 후보는, 읽는 장소를 알려주는 것뿐입니다. | 후보에서 알 수 있는 것은, 어떤 문장을 다시 읽어야 하는지 뿐입니다. |
| ... | ||
| 나머지 20건은 수정하지 않았습니다. 9건은 '발자국이 남는다'를 예시로 인용한 문장이었고, 나머지 11건도 문제가 없는 문장이었습니다. |
이렇게 일본인이 사용하는 일본어에서 벗어난 글을 쉽게 감지할 수 있다면 도움이 될 것 같습니다.
OpenAI의 Decisions API에서도 비슷한 것을 할 수 있을 것 같아서, 무료 토큰이 떨어지면 저는 그쪽으로 옮길 계획입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기