NLP 함수
NLP 함수
텍스트의 문자 집합·언어를 감지하고, 감성(톤)을 판별하며, 형태소 원형(lemmatization)·어간(stemming)·동의어를 다루는 자연어 처리 함수들이에요. 대부분 실험적 기능이라 사용하려면 allow_experimental_nlp_functions = 1 설정이 필요해요.
출처: 문서
본문
detectCharset
Introduced in: v22.2.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
UTF-8이 아닌 인코딩된 입력 문자열의 문자 집합을 감지해요.
구문 (Syntax)
detectCharset(s)
인자 (Arguments)
s— 분석할 텍스트.String
반환 값 (Returned value)
감지된 문자 집합의 코드를 담는 문자열을 반환해요. String
예시 (Examples)
기본 사용 (Basic usage)
SET allow_experimental_nlp_functions = 1;
SELECT detectCharset('Ich bleibe für ein paar Tage.')
WINDOWS-1252
detectLanguage
Introduced in: v22.2.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
UTF-8 인코딩된 입력 문자열의 언어를 감지해요. 함수는 CLD2 라이브러리를 사용해 감지하고 2문자 ISO 언어 코드를 반환해요.
입력이 길수록 언어 감지가 더 정확해져요.
구문 (Syntax)
detectLanguage(s)
인자 (Arguments)
text_to_be_analyzed— 분석할 텍스트.String
반환 값 (Returned value)
감지된 언어의 2문자 ISO 코드를 반환해요. 가능한 다른 결과: un = 알 수 없음, 어떤 언어도 감지하지 못함, other = 감지된 언어에 2문자 코드가 없음. String
예시 (Examples)
기본 사용 (Basic usage)
SET allow_experimental_nlp_functions = 1;
SELECT detectLanguage('Je pense que je ne parviendrai jamais à parler français comme un natif.')
fr
detectLanguageMixed
Introduced in: v22.2.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
detectLanguage 함수와 비슷하지만, detectLanguageMixed는 텍스트에서 특정 언어가 차지하는 비율에 매핑된 2문자 언어 코드의 Map을 반환해요.
구문 (Syntax)
detectLanguageMixed(s)
인자 (Arguments)
s— 분석할 텍스트.String
반환 값 (Returned value)
키가 2문자 ISO 코드이고 대응 값이 그 언어로 발견된 텍스트의 비율인 맵을 반환해요. Map(String, Float32)
예시 (Examples)
혼합 언어 (Mixed languages)
SET allow_experimental_nlp_functions = 1;
SELECT detectLanguageMixed('二兎を追う者は一兎をも得ず二兎を追う者は一兎をも得ず A vaincre sans peril, on triomphe sans gloire.')
{'ja':0.62,'fr':0.36}
detectLanguageUnknown
Introduced in: v22.2.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
detectLanguage 함수와 비슷하지만, detectLanguageUnknown 함수는 UTF-8이 아닌 인코딩된 문자열로 동작해요. 문자 집합이 UTF-16 또는 UTF-32일 때 이 버전을 선호해요.
구문 (Syntax)
detectLanguageUnknown('s')
인자 (Arguments)
s— 분석할 텍스트.String
반환 값 (Returned value)
감지된 언어의 2문자 ISO 코드를 반환해요. 가능한 다른 결과: un = 알 수 없음, 어떤 언어도 감지하지 못함, other = 감지된 언어에 2문자 코드가 없음. String
예시 (Examples)
기본 사용 (Basic usage)
SET allow_experimental_nlp_functions = 1;
SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
de
detectTonality
Introduced in: v22.2.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
제공된 텍스트 데이터의 감성(sentiment)을 판별해요.
함수는 내장된 감정 사전을 사용하며, 현재는 러시아어에만 동작해요.
구문 (Syntax)
detectTonality(s)
인자 (Arguments)
s— 분석할 텍스트.String
반환 값 (Returned value)
텍스트의 단어들의 평균 감성 값을 반환해요. Float32
예시 (Examples)
러시아어 감성 분석 (Russian sentiment analysis)
SET allow_experimental_nlp_functions = 1;
SELECT
detectTonality('Шарик - хороший пёс'),
detectTonality('Шарик - пёс'),
detectTonality('Шарик - плохой пёс')
0.44445 0 -0.3
lemmatize
Introduced in: v21.9.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
주어진 단어에 대해 lemmatization(표제어 추출)을 수행해요. 이 함수는 작동하려면 github에서 얻을 수 있는 사전이 필요해요. 로컬 파일에서 사전을 로드하는 자세한 내용은 “사전 정의”(Defining Dictionaries) 페이지를 참고해요.
구문 (Syntax)
lemmatize(lang, word)
인자 (Arguments)
lang— 규칙이 적용될 언어.Stringword— lemmatize할 소문자 단어.String
반환 값 (Returned value)
단어의 표제어(lemmatized) 형태를 반환해요. String
예시 (Examples)
영어 lemmatization
SET allow_experimental_nlp_functions = 1;
SELECT lemmatize('en', 'wolves')
wolf
stem
Introduced in: v21.9.0
Snowball 알고리즘을 사용해 단어 또는 단어 배열에 대해 stemming(어간 추출)을 수행해요. 각 입력 문자열은 소문자 단어 하나여야 해요 — 공백이 있는 문자열은 예외를 발생시켜요. 대문자 문자를 전달하면 정의되지 않은 결과를 만들어요. 스칼라 입력(String 포함)은 String을, 배열 입력은 Array(String)을 반환해요. String과 FixedString의 Nullable과 LowCardinality 변형을 지원해요. 지원되는 언어 식별자 목록은 system.stemmers에서 확인할 수 있어요.
구문 (Syntax)
stem(word, language)
인자 (Arguments)
word— stemming할 소문자 단어 하나(또는 단어 배열). 반드시 소문자여야 해요 — 대문자는 정의되지 않은 결과를 만들어요. String, FixedString, Array(String), Array(FixedString), Array(Nullable(String)), Array(Nullable(FixedString))을 받아요.String또는FixedString또는Array(String)또는Array(FixedString)language— stemming 규칙이 적용될 언어. 정규 식별자는 system.stemmers에 나열돼요(예:'english','german','porter'). Snowball은 정의된 곳에서 2·3문자 ISO 639 코드(예:'en','eng')를 별칭으로도 받지만, 언어마다 커버리지가 다르므로 이식성을 위해system.stemmers의 이름을 선호해요.String
반환 값 (Returned value)
단어의 어간 추출 형태(String), 또는 어간 추출된 단어들의 배열(Array(String)). String 또는 Array(String)
예시 (Examples)
단일 단어 stemming
SELECT stem('blessing', 'en') AS res
bless
단어 배열 stemming
SELECT stem(['blessing', 'disguise'], 'en') AS res
['bless','disguis']
FixedString stemming
SELECT stem(toFixedString('blessing', 10), 'en') AS res
bless
Nullable 단어 stemming
SELECT stem(toNullable('blessing'), 'en') AS res
bless
synonyms
Introduced in: v21.9.0
경고: 이 함수는 실험적이며, 향후 릴리스에서 예측할 수 없는 하위 호환성을 깨는 방식으로 바뀔 수 있어요. 활성화하려면
allow_experimental_nlp_functions = 1을 설정해요.
주어진 단어의 동의어를 찾아요.
두 가지 종류의 동의어 확장(extension)이 있어요:
plainwordnet
plain 확장 타입을 쓰면 각 줄이 특정 동의어 집합에 대응하는 단순 텍스트 파일의 경로를 제공해야 해요. 이 줄의 단어들은 공백 또는 탭 문자로 구분되어야 해요.
wordnet 확장 타입을 쓰면 WordNet 시소러스가 있는 디렉토리의 경로를 제공해야 해요. 시소러스에는 WordNet sense index가 포함되어야 해요.
구문 (Syntax)
synonyms(ext_name, word)
인자 (Arguments)
ext_name— 검색이 수행될 확장의 이름.Stringword— 확장에서 검색될 단어.String
반환 값 (Returned value)
주어진 단어의 동의어 배열을 반환해요. Array(String)
예시 (Examples)
동의어 찾기 (Find synonyms)
SET allow_experimental_nlp_functions = 1;
SELECT synonyms('en', 'important')
['important','big','critical','crucial','essential']
더 알아보기 (Learn more)
- ClickHouse 함수 목록 전체는 함수 개요를 참고해요.