← 블로그로 돌아가기

언어 감지 API: 트라이그램 감지의 원리

언어 감지 API: 트라이그램 감지의 원리

트라이그램 빈도 기반 언어 감지는 텍스트에 포함된 세 글자 연속열의 개수를 세고, 그 분포를 언어별로 미리 계산된 프로필과 비교하여 언어를 식별합니다. 신경망 모델이 필요 없는 작고 빠른 통계 기법이며, 76개 언어를 지원하는 ipto 언어 감지기의 바탕이 되는 방식입니다.

트라이그램 감지의 작동 방식

언어마다 특징적인 글자 조합이 있습니다. 영어에서는 "the", "ing", "ion" 같은 연속열이 곳곳에 나타나고, 스페인어에서는 "ión", "que", "los"가, 독일어에서는 "sch", "ein", "der"가 자주 등장합니다. 트라이그램은 텍스트에서 가져온 세 글자 연속열을 말하며, 보통 소문자로 바꾸고 숫자와 구두점을 제거한 뒤, 공백은 단어 경계가 패턴의 일부가 되도록 남겨 둡니다. 예를 들어 " th"라는 문자열은 "th"로 시작하는 단어를 나타냅니다.

감지기는 대규모 참조 코퍼스에서 트라이그램을 세고 빈도순으로 순위를 매겨 언어별 프로필을 미리 만들어 둡니다. 쿼리 시점에는 입력 텍스트에 대해 같은 작업을 수행하고 그 분포가 저장된 각 프로필과 얼마나 가까운지 측정합니다. 거리가 가장 작은 언어가 선택되며, 최상위 후보와 차상위 후보의 격차가 신뢰도 값이 됩니다. 프로필은 조회 테이블이므로 요청당 작업은 텍스트를 한 번 훑고 몇 번 비교하는 것이 전부입니다. 원격 서비스가 필요 없으므로 텍스트에 관한 어떤 것도 서버 밖으로 나갈 필요가 없습니다.

문자 체계와 트라이그램

트라이그램 통계는 많은 언어가 같은 문자 체계를 공유할 때 가장 유용합니다. 라틴, 키릴, 아랍, 데바나가리 문자는 각각 많은 언어를 담고 있어, 감지기는 포르투갈어와 스페인어, 러시아어와 우크라이나어를 구분하려면 빈도 패턴에 의존해야 합니다. 그리스어, 태국어, 한국어, 타밀어, 벵골어처럼 고유한 문자 체계를 가진 언어는 문자만으로 언어를 알 수 있는 경우가 보통이므로 빈도 비교가 필요하지 않습니다. 중국어와 일본어는 조금 더 주의가 필요한데, 일본어 텍스트는 가나와 한자를 섞어 쓰므로 가나가 일본어의 강한 단서가 되기 때문입니다. ipto에서는 76개 언어 중 61개를 트라이그램 빈도로 구분하고 나머지 15개는 문자 체계로 인식합니다.

잘 작동하는 경우와 그렇지 않은 경우

제목, 댓글, 검색어, 지원 티켓 같은 짧은 웹 텍스트에는 트라이그램 방식이 잘 맞습니다. 유용한 추정을 내는 데 필요한 입력이 매우 적고, 실행 비용이 낮으며, 완전히 결정적이어서 동작을 테스트하고 디버깅하기 쉽습니다. 대형 신경망 분류기는 특히 매우 짧거나 노이즈가 많은 텍스트 같은 어려운 경우에 더 정확할 수 있지만, 실행 비용이 더 들고 내부를 들여다보기 어렵습니다. 어느 쪽이 나은지는 정확도 요구 사항과 제약 조건에 달려 있으며, 라우팅과 태깅에는 경량 감지기로 충분한 경우가 많습니다.

의존하기 전에 실패 유형을 알아 두세요.

  • 매우 짧은 입력. 몇 글자만으로는 트라이그램이 너무 적습니다. ipto API는 10자 미만 입력에는 null 언어를 반환하며, 대략 30자 미만 입력에는 최선의 추측을 제공할 수 있지만 reliable을 false로 표시합니다.
  • 밀접하게 관련된 언어. 노르웨이어와 덴마크어, 크로아티아어와 세르비아어는 트라이그램 대부분을 공유합니다. 신뢰도가 낮을 때는 차순위 후보를 확인하세요.
  • 여러 언어가 섞인 텍스트. 프로필 비교는 하나의 지배적 언어를 가정합니다. 중간에 언어가 바뀌는 문단은 글자 대부분을 차지하는 언어를 반환합니다.
  • 노이즈. URL, 코드, 해시태그, 제품 코드는 어느 언어에도 속하지 않는 트라이그램을 추가합니다. 감지 전에 제거하세요.
  • 희귀 언어. 지원 범위 밖의 언어는 정확한 결과가 아니라 통계적으로 가장 가까운 결과를 반환합니다.

실제 사용 방법

언어 감지기에 텍스트를 붙여 넣으면 선택된 언어, 신뢰도 값, 차순위 후보를 볼 수 있습니다. 코드에서는 GET /v1/language?text=Bonjour를 호출하세요. 요청은 로컬에서 분석되며, 텍스트는 제3자 업체나 AI 모델로 전송되지 않고 아무것도 기록되지 않습니다. 무료 플랜은 가입 없이 하루 1,000건의 요청을 허용하며, 응답 필드는 API 문서에 설명되어 있습니다.

일반적인 용도로는 번역 원본 언어 선택, 페이지의 lang 속성 설정, 지원 티켓을 올바른 팀으로 라우팅하는 것이 있습니다. 또 다른 유용한 패턴은 텍스트 언어를 네트워크 맥락과 짝짓는 것입니다. 언어는 연결이 아니라 작성자에 관한 신호이므로 연결의 출처와 자주 어긋납니다. 프랑스에 있거나 VPN을 쓰는 스페인어 사용자는 지극히 정상입니다. 두 신호를 비교하고 싶다면 IP 주소에 대한 VPN 및 프록시 검사로 위치 불일치에 네트워크상의 이유가 있는지 확인할 수 있고, User-Agent 파서는 브라우저와 기기 맥락을 보여 줍니다. 불일치는 어디까지나 힌트로 취급하고 문제가 있다는 증거로 보지 마세요.

명확한 답변

세 글자 연속열을 세고 그 빈도를 언어별로 저장된 프로필과 비교하여 텍스트의 언어를 식별합니다. 가장 가까운 프로필이 답이 되고, 그 격차가 신뢰도 값을 줍니다.
짧은 문자열에는 비슷한 언어를 안정적으로 구분할 만큼의 트라이그램이 없습니다. ipto API는 10자 미만에서는 null 언어를 반환하고 약 30자 미만의 결과는 신뢰할 수 없다고 표시합니다.
아니요. ipto 언어 감지기는 트라이그램 통계로 텍스트를 로컬에서 분석하며, 외부 업체나 AI 모델을 호출하지 않고 입력을 기록하지도 않습니다.
← 블로그로 돌아가기