본문으로 바로가기
본문으로 바로가기

자연어 처리(NLP) 함수

Experimental feature. Learn more.
Not supported in ClickHouse Cloud
참고

현재 개발 중인 실험적 기능으로, 일반적인 사용에는 아직 적합하지 않습니다. 향후 릴리스에서 예측할 수 없고 이전 버전과 호환되지 않는 방식으로 변경될 수 있습니다. 사용하려면 allow_experimental_nlp_functions = 1 로 설정해야 합니다.

detectCharset

도입 버전: v22.2

UTF-8로 인코딩되지 않은 입력 문자열의 문자 집합을 감지합니다.

구문

detectCharset(s)

인수

  • s — 분석할 텍스트입니다. String

반환 값

감지된 문자 집합의 코드를 포함하는 문자열을 반환합니다. String

예시

기본 사용 예

SELECT detectCharset('Ich bleibe für ein paar Tage.')
WINDOWS-1252

detectLanguage

도입된 버전: v22.2

UTF-8로 인코딩된 입력 문자열의 언어를 감지합니다. 이 FUNCTION은 감지를 위해 CLD2 라이브러리를 사용하며, 2자리 ISO 언어 코드를 반환합니다.

입력이 길수록 언어 감지 정확도가 높아집니다.

구문

detectLanguage(s)

인수

  • text_to_be_analyzed — 분석할 텍스트입니다. String

반환 값

감지된 언어의 2자리 ISO 코드를 반환합니다. 가능한 다른 결과: un = 알 수 없음(어떤 언어도 감지할 수 없음), other = 감지된 언어에 2자리 코드가 없음. String

예제

혼합 언어 텍스트

SELECT detectLanguage('Je pense que je ne parviendrai jamais à parler français comme un natif. Where there\'s a will, there\'s a way.')
fr

detectLanguageMixed

도입 버전: v22.2

detectLanguage 함수와 유사하지만, detectLanguageMixed는 텍스트에서 각 언어가 차지하는 비율에 매핑한 2자리 언어 코드의 Map(맵)을 반환합니다.

구문

detectLanguageMixed(s)

인수

  • s — 분석할 텍스트 String

반환 값

2자리 ISO 언어 코드를 키로 하고, 각 언어로 판별된 텍스트의 비율(퍼센트 값)을 값으로 가지는 맵을 반환합니다. Map(String, Float32)

예시

혼합 언어

SELECT detectLanguageMixed('二兎を追う者は一兎をも得ず二兎を追う者は一兎をも得ず A vaincre sans peril, on triomphe sans gloire.')
{'ja':0.62,'fr':0.36}

detectLanguageUnknown

도입 버전: v22.2

detectLanguage 함수와 유사하지만, detectLanguageUnknown 함수는 UTF-8로 인코딩되지 않은 문자열에서 동작합니다. 문자 집합이 UTF-16 또는 UTF-32라면 이 버전을 사용하는 것이 좋습니다.

구문

detectLanguageUnknown('s')

인수

  • s — 분석할 텍스트. String

반환 값

감지된 언어의 2글자 ISO 코드를 반환합니다. 가능한 다른 결과는 다음과 같습니다: un = 알 수 없음, 어떤 언어도 감지할 수 없음, other = 감지된 언어에 해당하는 2글자 코드가 없음. String

예제

기본 사용법

SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
de

detectProgrammingLanguage

도입 버전: v22.2

주어진 소스 코드 스니펫에서 프로그래밍 언어를 판별합니다.

구문

detectProgrammingLanguage('source_code')

인수

  • source_code — 분석할 소스 코드의 문자열 표현입니다. String

반환 값

프로그래밍 언어를 나타내는 String을 반환합니다.

예시

C++ 코드 감지

SELECT detectProgrammingLanguage('#include <iostream>')
C++

detectTonality

도입 버전: v22.2

제공된 텍스트 데이터의 감성을 판별합니다.

제한 사항

이 FUNCTION은 현재 구현에서 내장된 감정 딕셔너리를 사용하며, 러시아어에서만 동작합니다.

구문

detectTonality(s)

인수

  • s — 분석할 텍스트. String

반환 값

텍스트 내 단어들의 평균 감성값을 반환합니다. Float32

예시

러시아어 감성 분석

SELECT
    detectTonality('Шарик - хороший пёс'),
    detectTonality('Шарик - пёс'),
    detectTonality('Шарик - плохой пёс')
0.44445, 0, -0.3

lemmatize

도입 버전: v21.9

지정된 단어에 대한 표제어 추출(lemmatization)을 수행합니다. 이 함수가 동작하려면 딕셔너리가 필요하며, GitHub에서 가져올 수 있습니다. 로컬 파일에서 딕셔너리를 로드하는 방법에 대한 자세한 내용은 "딕셔너리 정의하기" 페이지를 참조하십시오.

구문

lemmatize(lang, word)

인수

  • lang — 규칙이 적용되는 언어입니다. String
  • word — 표제어 추출이 필요한 소문자로 된 단어입니다. String

반환 값

단어의 표제어 형태를 반환합니다. String

예시

영어 표제어 추출

SELECT lemmatize('en', 'wolves')
wolf

stem

도입된 버전: v21.9

지정된 단어에 대해 어간 추출(stemming)을 수행합니다.

구문

stem(lang, word)

인수(Arguments)

  • lang — 규칙을 적용할 언어 코드입니다. 두 글자의 ISO 639-1 코드를 사용합니다. String
  • word — 어간을 추출(stemming)할 소문자 단어입니다. String

반환 값(Returned value)

단어의 어간이 추출된 형태를 반환합니다. String

예시(Examples)

영어 어간 추출(English stemming)

SELECT arrayMap(x -> stem('en', x),
['I', 'think', 'it', 'is', 'a', 'blessing', 'in', 'disguise']) AS res
['I','think','it','is','a','bless','in','disguis']

synonyms

도입 버전: v21.9

지정된 단어의 동의어를 찾습니다.

동의어 확장 기능에는 두 가지 유형이 있습니다:

  • plain
  • wordnet

plain 확장 유형에서는 각 줄이 하나의 특정 동의어 집합에 해당하는 단순 텍스트 파일의 경로를 제공해야 합니다. 이 줄에 있는 단어들은 공백 문자 또는 탭 문자로 구분되어야 합니다.

wordnet 확장 유형에서는 WordNet 시소러스를 포함하는 디렉터리 경로를 제공해야 합니다. 이 시소러스에는 WordNet 의미 인덱스가 포함되어 있어야 합니다.

구문

synonyms(ext_name, word)

인수(Arguments)

  • ext_name — 검색이 수행될 확장의 이름입니다. String
  • word — 확장에서 검색할 단어입니다. String

반환값(Returned value)

주어진 단어에 대한 동의어의 배열을 반환합니다. Array(String)

예시(Examples)

동의어 찾기(Find synonyms)

SELECT synonyms('list', 'important')
['important','big','critical','crucial']