본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

문자열이 정확히 같은지로 다시 검증하기

~12 min · revalidation, string-equality, drift, determinism

Level 0꺼진 심지
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"이 인용이 아직 정직한가? 기계가 언제나 같은 방식으로 답하려면 의미가 아니라 문자열을 물어야 해."

오래된 인용을 현재 원문에 다시 대봐

2년 전에 passage를 고정하고 그 위에 claim을 만들었는데 소스 에세이는 그동안 열 번 편집되었을 수 있어. 지금도 인용이 당시의 정확한 문장을 가리키는지 수천 건에 대해 사람이 일일이 읽지 않고 확인해야 해. 이 요구는 답이 취향이나 해석이 아니라 계산 가능한 규칙이어야 한다는 뜻이야.

정확한 문자열 비교로 세 상태를 얻어

  • 유효 (live): 고정한 텍스트가 기록된 문자 위치에 그대로 있어. 인용은 처음 만든 날과 똑같이 유효해.
  • 위치 재고정 (reanchored): 옛 위치에는 없지만 같은 문서의 다른 곳에서 정확한 텍스트가 딱 한 번 발견돼. 문장이 이동했을 뿐이므로 새 위치로 안전하게 옮길 수 있어.
  • 원문 이탈 (drifted): 정확한 텍스트를 찾을 수 없어. 단어가 바뀌었거나 사라진 상태라서 그 사실만 보고해.

판정은 모두 문자열의 ==와 등장 횟수로 끝나.

'뜻은 비슷하다'는 판단을 넣지 않아

유사 문자열 검색과 임베딩 점수, '대충 같은 뜻인가?'를 판단하는 모델은 재검증에 쓰지 않아. 그런 판단을 허용하면 소스가 그대로인데도 모델이나 임계값이 바뀌어 오늘은 유효하고 내일은 무효인 인용이 생길 수 있어. 쉼표 하나만 달라도 원문 이탈로 잡는 엄격함은 불편하지만, '유효'라는 판정을 믿을 수 있게 만드는 대가야.

검증은 기계적으로 반복할 수 있어야 해. 해석이 필요한 순간 그것은 검증이 아니라 또 하나의 리뷰가 돼. 단순한 기계가 백만 번 실행해도 같은 입력에 같은 판정을 내리게 만들어.

원문 이탈은 현재 상태이지 영구 판결이 아니야

재검증은 passage를 삭제하거나 고장 표시를 새겨 넣지 않고 현재 상태만 계산해. 나중에 편집을 되돌려 정확한 문장이 돌아오면 다음 실행에서 다시 유효 상태가 돼. 같은 문장이 다른 자리에서 딱 한 번만 발견되면 그 위치에 다시 고정하고. 증거를 수선한 것이 아니라 현실을 다시 읽어 상태를 새로 파생한 거야. 인덱스 복구와 마찬가지로 증거 레이어도 가능한 곳에서는 패치보다 재계산을 택해.

Code

세 상태, 순수 문자열 동등, 아무것도 파괴하지 않아·python
def revalidate(passage) -> str:
    """Is this citation still honest? Decided by string equality — nothing else."""
    text = read_current_source(passage.corpus_id, passage.doc_relpath)

    # 1. LIVE — the pinned text is still exactly where we recorded it.
    if text[passage.char_start:passage.char_end] == passage.text:
        return "live"

    # 2. REANCHORED — the doc moved, but the exact words are uniquely findable.
    if text.count(passage.text) == 1:          # unique == unambiguous == safe
        new_start = text.index(passage.text)
        update_offsets(passage, new_start, new_start + len(passage.text))
        return "reanchored"

    # 3. DRIFTED — the exact text isn't there. Report it; destroy nothing.
    return "drifted"

# Note the absence: no fuzzy match, no similarity score, no model asked
# "is this close enough?". And because nothing is destroyed, if the text ever
# returns, the next revalidation reports "live" again. Drift heals.

External links

Exercise

문서에서 보존한 인용문이 있고 그 문서가 편집됐다고 해 보자. 먼저 같은 위치에 정확한 문장이 남았는지, 없다면 다른 위치에 딱 한 번만 나타나는지 확인하고, 둘 다 아니면 원문 이탈로 보고하는 절차를 적어봐. 여기에 '정확히 같지는 않지만 비슷하니 인정한다'는 네 번째 선택지를 넣으면 앞의 세 상태가 왜 믿을 수 없게 되는지도 한 문장으로 설명해.
Hint
'충분히 비슷'이 허용되는 순간, 모든 검증 결과가 판단이 되고, 리포트가 소스에 대한 증거이길 그만두고 소스에 대한 의견이 돼. 정확한 일치만 인정하는 엄격함이 바로 '유효'라는 판정에 진짜 의미를 실어 줘.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.