Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

自然语言处理 (NLP) 函数

detectCharset

引入版本:v22.2.0

Experimental 功能
ClickHouse Cloud 不支持此功能

检测采用非 UTF8 编码的输入字符串的字符集。

语法

detectCharset(s)

参数

  • s — 要分析的文本。String

返回值

返回包含所检测字符集代码的字符串。String

示例

基本用法

SET allow_experimental_nlp_functions = 1;
SELECT detectCharset('Ich bleibe für ein paar Tage.')
WINDOWS-1252

detectLanguage

引入版本:v22.2.0

Experimental 功能
ClickHouse Cloud 不支持此功能

检测采用 UTF8 编码的输入字符串所使用的语言。 该函数使用 CLD2 库 进行检测,并返回 2 字母 ISO 语言代码。

输入内容越长,语言检测就越准确。

语法

detectLanguage(s)

参数

  • text_to_be_analyzed — 要分析的文本。String

返回值

返回检测到的语言的 2 字母 ISO 代码。其他可能的结果包括:un = 未知,无法检测出任何语言;other = 检测到的语言没有 2 字母代码。String

示例

基本用法

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

Experimental 功能
ClickHouse Cloud 不支持此功能

detectLanguage 函数类似,但 detectLanguageMixed 返回一个 Map,其中 2 字母语言代码映射为相应语言在文本中所占的百分比。

语法

detectLanguageMixed(s)

参数

  • s — 要分析的文本 String

返回值

返回一个映射,其中键为 2 字母 ISO 代码,相应的值为该语言在文本中所占的百分比 Map(String, Float32)

示例

混合语言

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

detectLanguageUnknown

引入版本:v22.2.0

Experimental 功能
ClickHouse Cloud 不支持此功能

detectLanguage 函数类似,不同之处在于 detectLanguageUnknown 函数可处理非 UTF8 编码的字符串。 当字符集为 UTF-16 或 UTF-32 时,建议优先使用此版本。

语法

detectLanguageUnknown('s')

参数

  • s — 要分析的文本。String

返回值

返回检测到的语言的 2 字母 ISO 代码。其他可能的结果包括:un = 未知,无法检测到任何语言;other = 检测到的语言没有 2 字母代码。String

示例

基本用法

SET allow_experimental_nlp_functions = 1;
SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
de

detectTonality

引入版本:v22.2.0

Experimental 功能
ClickHouse Cloud 不支持此功能

确定给定文本数据的情感倾向。

该函数使用内置情感字典,目前仅适用于俄语。

语法

detectTonality(s)

参数

  • s — 要分析的文本。String

返回值

返回文本中各单词情感值的平均值 Float32

示例

俄语情感分析

SET allow_experimental_nlp_functions = 1;

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

lemmatize

引入版本:v21.9.0

Experimental 功能
ClickHouse Cloud 不支持此功能

对给定单词执行词形还原。 此函数需要依赖字典运行,可从 github 获取。 有关如何从本地文件加载字典的更多详细信息,请参见页面 "定义字典"

语法

lemmatize(lang, word)

参数

  • lang — 要应用其规则的语言。String
  • word — 需要进行词形还原的小写单词。String

返回值

返回该单词经过词形还原后的形式。String

示例

英语词形还原

SET allow_experimental_nlp_functions = 1;
SELECT lemmatize('en', 'wolves')
wolf

stem

引入版本:v21.9.0

使用 Snowball 算法对单个单词或单词数组执行词干提取。 每个输入字符串都必须是一个小写单词——包含空白字符的字符串会引发异常。 传入大写字符会产生未定义结果。 对于标量输入 (包括 FixedString) ,返回 String;对于数组输入,返回 Array(String)。 支持 String 和 FixedString 的 Nullable 与 LowCardinality 变体。 支持的语言标识符列表可在 system.stemmers 中查看。

语法

stem(word, language)

参数

  • word — 要进行词干提取的单个小写单词 (或单词数组) 。必须使用小写——大写字符会产生未定义的结果。接受 String、FixedString、Array(String)、Array(FixedString)、Array(Nullable(String)) 或 Array(Nullable(FixedString))。StringFixedStringArray(String)Array(FixedString)
  • language — 要应用其词干提取规则的语言。规范标识符列在 system.stemmers 中 (例如 'english'、'german'、'porter')。Snowball 也接受 2 字母或 3 字母的 ISO 639 代码 (例如 'en'、'eng') 作为已定义的别名,但不同语言的支持范围有所差异——为保证可移植性,建议优先使用 system.stemmers 中列出的名称。String

返回值

单词的词干形式 (String) ,或词干提取后的单词数组 (Array(String)) 。StringArray(String)

示例

对单个单词进行词干提取

SELECT stem('blessing', 'en') AS res
bless

单词数组的词干提取

SELECT stem(['blessing', 'disguise'], 'en') AS res
['bless','disguis']

对 FixedString 执行词干提取

SELECT stem(toFixedString('blessing', 10), 'en') AS res
bless

Nullable 单词的词干提取

SELECT stem(toNullable('blessing'), 'en') AS res
bless

synonyms

引入版本:v21.9.0

Experimental 功能
ClickHouse Cloud 不支持此功能

查找给定词语的同义词。

同义词扩展有两种类型:

  • plain
  • wordnet

使用 plain 扩展类型时,需要提供一个简单文本文件的路径,其中每一行对应一个特定的同义词集合。 该行中的词语必须以空格或制表符分隔。

使用 wordnet 扩展类型时,需要提供一个包含 WordNet 词库的目录路径。 该词库必须包含 WordNet 词义索引。

语法

synonyms(ext_name, word)

参数

  • ext_name — 将在其中执行搜索的扩展名称。String
  • word — 要在该扩展中搜索的词。String

返回值

返回给定词的同义词数组。Array(String)

示例

查找同义词

SET allow_experimental_nlp_functions = 1;
SELECT synonyms('en', 'important')
['important','big','critical','crucial','essential']
Navigation