Skip to content

detectLanguage

글자 비율로 글의 주된 문자 체계를 정합니다. 모델도 사전도 없는 순수한 통계입니다. "어떤 토크나이저를 쓸지 / 어떤 언어 전용 모델을 쓸지 / 어떤 조판 수치를 쓸지"를 갈라야 할 때 쓰세요.

API

detectLanguage(text, sampleSize?)

매개변수설명타입기본값
text살펴볼 글string필수
sampleSize표본으로 볼 글자 수number20000

'zh' \| 'ja' \| 'ko' \| 'en' \| 'other'를 반환합니다.

브라우저 UI 언어를 같은 갈래로 옮긴 값입니다. 살펴볼 내용이 없을 때의 기본값이며, SSR에서는 'other'를 반환합니다.

예시

js
import { detectLanguage, navigatorLanguage } from 'ranuts';

const lang = book.content ? detectLanguage(book.content) : navigatorLanguage();
const model = { zh: 'title-zh-v1', ja: 'title-ja-v1', ko: 'title-ko-v1', en: 'title-en-v1' }[lang];

참고

  1. 앞부분만 표본으로 봅니다. 글의 언어는 처음부터 끝까지 한결같습니다. 첫 문단이 이미 알려 주는 사실을 알자고 100만 자짜리 책을 훑는 것은 낭비입니다.
  2. 영어가 조금 섞인 중국어 글은 그대로 중국어입니다. 판정이 영어로 넘어가려면 라틴 문자가 뚜렷하게(3배가 넘게) 우세해야 합니다. 중국어에 영어를 섞는 일은 흔하지만 그 반대는 그렇지 않습니다.
  3. CJK 안에서는 가나와 한글이 갈라 줍니다. 한자만으로는 중국어와 일본어를 가릴 수 없습니다. 일본어도 한자를 쓰니까요. 가나는 가릴 수 있습니다. 일본어는 조사마다 활용마다 가나를 쓰고 중국어는 아예 쓰지 않으며, 한국어에서는 한글이 같은 몫을 합니다. 표지가 되는 문자 없이 한자만 있으면 중국어로 읽습니다. 셋 가운데 한자만으로 적히는 것은 중국어뿐이니까요.
  4. 제목 하나 인용했다고 판정이 뒤집히지는 않습니다. 표지 문자가 CJK 글자의 5% 이상을 차지해야 합니다. 그래서 일본 영화 제목을 인용한 중국어 페이지는 그대로 중국어입니다.
  5. 언어 이름을 빌린 문자 체계입니다. 스페인어도 포르투갈어도 독일어도 모두 'en'을 반환합니다. 같은 라틴 문자이고, 원하는 분절과 줄바꿈이 같으며, 이 함수 아래쪽 어디에도 그것들을 가릴 방도가 없습니다. 키릴 문자, 아랍 문자, 태국 문자, 숫자만 있는 글은 'other'에 들어갑니다. 언어를 식별하는 것이 아니라 문자 체계를 거칠게 나누는 것입니다.

MIT 라이선스로 배포됩니다.