반응형 전체 글452 AI 텍스트 분류 확률이 모두 0일 때: 나이브베이즈 로그 점수로 비교하기 긴 문서를 분류할 때 클래스 점수가 둘 다 0으로 나온다면, 단어 확률이 잘못됐다고 단정하기 전에 부동소수점 언더플로를 확인해야 합니다. 작은 확률의 곱을 직접 만들지 말고 로그값을 더해 비교한 뒤, 정규화가 필요할 때 가장 큰 로그값을 빼고 지수함수를 적용하는 것이 핵심입니다.아래 작은 나이브베이즈 모델은 합성 문장 4개에서 실제로 토큰 빈도와 클래스 사전확률을 학습합니다. 긴 스트레스 입력에서는 원래 방식의 점수가 모두 0이어도 로그 점수로는 차이를 비교할 수 있고, 대칭 입력은 0.5·0.5로 돌아옵니다. Python 표준 라이브러리만 실행하며 LLM·외부 API·유료 서비스는 사용하지 않습니다.스무딩과 언더플로는 해결하는 문제가 다릅니다이 예제의 0번은 일반 안내, 1번은 오류 문의를 나타내는 합.. 2026. 10. 27. SQLite CHECK에 NULL이 통과하는 이유: NOT NULL과 양수 조건 나누기 SQLite에서 CHECK(quantity > 0)만 선언하면 quantity가 NULL인 행이 들어갈 수 있습니다. CHECK 식이 0일 때 위반이고 NULL이면 위반으로 처리하지 않기 때문입니다. 값이 반드시 있어야 하는 업무라면 NOT NULL을 따로 선언하고 양수 조건과 함께 검사해야 합니다.하지만 NOT NULL을 더했다고 수량이 반드시 정수가 되는 것은 아닙니다. 아래 실습은 NULL 차단과 값 범위, 저장된 타입 검사를 나누어 보여 줍니다. Python sqlite3의 메모리 데이터베이스만 만들며 기존 운영 테이블이나 데이터를 바꾸지 않습니다.WHERE와 CHECK에서 NULL을 똑같이 생각하면 놓칩니다NULL > 0의 결과는 참이나 거짓이 아닌 NULL입니다. WHERE는 참으로 평가된 행.. 2026. 10. 27. CSV 열 수가 달라도 DictReader가 읽을 때: 추가·누락·빈 필드 검증 CSV 헤더가 세 열인데 어떤 행은 네 값이고 어떤 행은 두 값이어도 csv.DictReader가 자동으로 파일 전체를 거부하지는 않습니다. 추가 필드는 restkey로 모이고 부족한 필드는 restval로 채워지므로, 입력을 쓰기 전에 헤더 계약과 각 레코드의 구조를 직접 검사해야 합니다.특히 a,b,처럼 마지막 셀이 빈 문자열인 경우와 a,b처럼 마지막 필드 자체가 없는 경우는 다릅니다. 아래 실습은 이 둘을 구분하고, 추가 쉼표·따옴표 안의 쉼표·여러 줄 필드를 같은 파일에서 확인합니다. 실제 고객 파일이나 데이터베이스에 쓰지 않고 메모리의 합성 CSV만 읽습니다.strict=True는 열 수 검증 옵션이 아닙니다csv 모듈의 strict=True는 파서가 잘못된 CSV 입력으로 판단한 경우 csv.. 2026. 10. 27. 위상 정렬 순서는 하나일까? 모든 순서를 만들지 않고 유일성 검사 DAG의 위상 정렬이 유일한지는 매 단계의 진입 차수 0인 준비 노드 수로 판단할 수 있습니다. 전체 처리에 성공했고 매 단계 선택지가 하나였다면 유일합니다. 어느 단계든 둘 이상을 고를 수 있었다면 여러 위상 순서가 있습니다. 다만 순환 때문에 끝까지 처리하지 못했다면 먼저 DAG가 아니라고 반환해야 합니다.작업 순서 한 개를 만드는 것과 가능한 순서가 한 개인지 확인하는 것은 다른 질문입니다. 자료를 사전순으로 정렬해 항상 같은 결과를 출력하더라도 원래 의존 관계가 순서를 하나로 강제하는 것은 아닐 수 있습니다.처음 준비 노드가 하나여도 중간에 선택지가 생깁니다A→B, A→C에서는 처음에는 A만 가능합니다. A를 처리한 뒤에는 B와 C가 동시에 준비됩니다. A,B,C와 A,C,B가 모두 간선을 지키므.. 2026. 10. 26. RAG 답변 캐시가 적중해도 다시 검사할 것: 인용 문서의 권한 회수 같은 사용자가 같은 질문을 해도, 인용 문서의 열람 권한이 회수됐다면 예전 RAG 답변을 그대로 돌려주면 안 됩니다. 답변 캐시가 적중했다는 사실은 저장된 결과를 찾았다는 뜻입니다. 지금 그 내용을 보여줘도 된다는 허가는 별도로 확인해야 합니다.예를 들어 직원이 부서를 옮긴 뒤에도 이전 부서 규정에서 만든 답변이 캐시에 남을 수 있습니다. 인용 링크만 숨겨도 답변 문장에 제한된 내용이 들어 있으면 문제가 남습니다. 이번 실습은 반환 직전에 현재 문서 존재 여부와 모든 인용의 열람 권한을 검사하는 작은 경계를 만듭니다.검색을 생략한 경로에도 권한 검사가 필요합니다검색 결과를 대상으로만 권한 필터를 적용하고 캐시 hit에서는 검색을 건너뛰면, 그 필터도 건너뛸 수 있습니다. 사용자 ID를 키에 넣어 다른 사.. 2026. 10. 26. 두 사람이 수정한 내용이 덮일 때: HTTP ETag·If-Match와 412 실습 두 사람이 같은 문서를 수정할 때 뒤늦은 저장이 앞선 변경을 덮는다면, 저장 요청에 읽었던 ETag를 If-Match로 보내고 서버에서 현재 값과 비교해야 합니다. 조건이 맞지 않으면 412로 거부하고 원래 본문을 보존합니다. 헤더를 보내는 것과 서버가 비교·갱신을 원자적으로 수행하는 것은 함께 구현해야 합니다.A와 B가 모두 v1을 읽었다고 가정합니다. A가 먼저 저장해 v2가 된 뒤 B가 v1 기준 본문을 보내면, 그 본문은 현재 상태를 반영하지 않습니다. 단순히 마지막 요청을 저장하는 서비스에서는 A의 변경이 사라질 수 있습니다.304 조회와 412 저장은 검사 목적이 다릅니다GET의 If-None-Match는 저장한 응답을 재사용할 수 있는지 확인하는 데 쓰입니다. 이번 PUT의 If-Match는.. 2026. 10. 26. 이전 1 2 3 4 ··· 76 다음 반응형