detectLanguage
글자 비율로 글의 주된 문자 체계를 정합니다. 모델도 사전도 없는 순수한 통계입니다. "어떤 토크나이저를 쓸지 / 어떤 언어 전용 모델을 쓸지 / 어떤 조판 수치를 쓸지"를 갈라야 할 때 쓰세요.
API
detectLanguage(text, sampleSize?)
| 매개변수 | 설명 | 타입 | 기본값 |
|---|---|---|---|
text | 살펴볼 글 | string | 필수 |
sampleSize | 표본으로 볼 글자 수 | number | 20000 |
'zh' \| 'ja' \| 'ko' \| 'en' \| 'other'를 반환합니다.
navigatorLanguage()
브라우저 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];참고
- 앞부분만 표본으로 봅니다. 글의 언어는 처음부터 끝까지 한결같습니다. 첫 문단이 이미 알려 주는 사실을 알자고 100만 자짜리 책을 훑는 것은 낭비입니다.
- 영어가 조금 섞인 중국어 글은 그대로 중국어입니다. 판정이 영어로 넘어가려면 라틴 문자가 뚜렷하게(3배가 넘게) 우세해야 합니다. 중국어에 영어를 섞는 일은 흔하지만 그 반대는 그렇지 않습니다.
- CJK 안에서는 가나와 한글이 갈라 줍니다. 한자만으로는 중국어와 일본어를 가릴 수 없습니다. 일본어도 한자를 쓰니까요. 가나는 가릴 수 있습니다. 일본어는 조사마다 활용마다 가나를 쓰고 중국어는 아예 쓰지 않으며, 한국어에서는 한글이 같은 몫을 합니다. 표지가 되는 문자 없이 한자만 있으면 중국어로 읽습니다. 셋 가운데 한자만으로 적히는 것은 중국어뿐이니까요.
- 제목 하나 인용했다고 판정이 뒤집히지는 않습니다. 표지 문자가 CJK 글자의 5% 이상을 차지해야 합니다. 그래서 일본 영화 제목을 인용한 중국어 페이지는 그대로 중국어입니다.
- 언어 이름을 빌린 문자 체계입니다. 스페인어도 포르투갈어도 독일어도 모두
'en'을 반환합니다. 같은 라틴 문자이고, 원하는 분절과 줄바꿈이 같으며, 이 함수 아래쪽 어디에도 그것들을 가릴 방도가 없습니다. 키릴 문자, 아랍 문자, 태국 문자, 숫자만 있는 글은'other'에 들어갑니다. 언어를 식별하는 것이 아니라 문자 체계를 거칠게 나누는 것입니다.