텍스트 유사도 검사기
두 텍스트의 유사도를 코사인·자카드·편집 거리로 분석합니다
텍스트 유사도 검사기
두 텍스트를 토큰화한 뒤 코사인 유사도, 자카드 유사도, 편집 거리(Levenshtein) 세 지표를 각각 계산하고, 0.4:0.3:0.3 비율로 가중 합산해 종합 점수를 냅니다. 코사인은 단어 빈도를 벡터로 만들어 내적을 각 벡터 크기의 곱으로 나누므로 단어 사용 "패턴"이 비슷할수록 높게 나오고, 자카드는 두 텍스트가 공유하는 고유 단어 수를 전체 고유 단어 수로 나눠 어휘 중복도만 보며, 편집 거리는 한 텍스트를 다른 텍스트로 바꾸는 데 필요한 최소 삽입·삭제·치환 횟수를 동적계획법(DP)으로 계산해 길이 대비 비율로 정규화합니다. 토큰화 방식은 언어에 따라 다른데, 한국어는 공백으로 구분된 어절을 그대로 하나의 토큰으로 쓰지만, 띄어쓰기가 없는 중국어·일본어(한자·히라가나·가타카나)는 각 글자를 개별 토큰으로 쪼개어 비교합니다 — 이렇게 나누지 않고 공백 기준으로만 자르면 문장 전체가 공백 없는 하나의 덩어리로 남아 사실상 비교가 불가능해지기 때문입니다.
자주 묻는 질문
코사인 유사도란 무엇인가요?
두 텍스트를 단어 빈도 벡터로 표현하고, 두 벡터의 내적을 각 벡터 크기(L2 norm)의 곱으로 나눠 코사인 각도값을 구합니다. 단어를 얼마나 자주, 비슷한 비율로 쓰는지에 민감해 어순보다는 어휘 사용 패턴을 반영합니다.
자카드 유사도란 무엇인가요?
두 텍스트에 등장하는 고유 단어 집합의 교집합 크기를 합집합 크기로 나눈 값입니다. 단어가 몇 번 반복되는지는 반영하지 않고 "어떤 단어를 공유하는가"만 봅니다.
편집 거리(Levenshtein) 유사도는 어떻게 계산되나요?
토큰을 공백으로 이어붙인 문자열 두 개 사이의 최소 편집 횟수를 O(m×n) DP 테이블로 계산해 1 − (편집횟수/최대길이)로 정규화합니다. 다만 두 문자열 중 하나라도 500자를 넘으면 DP 계산량이 급증하므로, 이 구간에서는 정확한 편집 거리 대신 두 길이의 비율(짧은 길이/긴 길이)로 근사치를 대신 보여줍니다. 즉 매우 긴 텍스트에서는 이 지표가 내용 차이가 아니라 "길이가 비슷한가"만 반영한다는 점을 알아두세요.
종합 유사도 점수는 세 지표를 어떻게 합산하나요?
코사인 40% + 자카드 30% + 편집 거리 30% 가중 평균입니다. 90% 이상 "거의 동일", 70~89% "매우 유사", 50~69% "유사", 30~49% "부분 유사", 30% 미만 "거의 다름"으로 구간을 나눠 표시합니다.
중국어·일본어 텍스트도 정확히 비교할 수 있나요?
네, 한자·히라가나·가타카나 문자는 개별 글자 단위로 토큰화됩니다. 공백으로 어절을 구분하지 않는 언어이기 때문에, 공백 기준으로만 자르면 전체 문장이 한 덩어리 토큰이 되어 서로 다른 두 문장이라도 어휘가 전혀 겹치지 않는 것으로 잘못 계산될 수 있어 글자 단위 분해를 사용합니다.
한국어 텍스트는 어떻게 토큰화되나요?
공백으로 구분된 어절을 그대로 하나의 단위로 사용합니다("먹었다"와 "먹었습니다"는 다른 토큰으로 취급). 형태소 분석기를 쓰지 않으므로 어미 변화나 조사 차이는 별개 단어로 인식되어 실제 의미보다 유사도가 낮게 나올 수 있습니다.
이 도구로 표절을 확인할 수 있나요?
유사도가 높으면 표절 가능성의 단서로 참고할 수 있지만, 문장 순서 재배열이나 동의어 치환까지 감지하는 전문 표절 검사 엔진은 아닙니다. 최종 판단의 보조 자료로만 활용하세요.
100% 유사도는 어떤 의미인가요?
토큰화 후 두 텍스트가 완전히 동일하다는 뜻입니다. 대소문자와 일부 특수문자는 비교 전에 정규화되므로, 대소문자만 다른 텍스트도 100%로 나올 수 있습니다.