跳至主要内容
跳至主要内容

自然语言处理 (NLP) 函数

实验性功能。 了解更多。
ClickHouse Cloud 中不支持
注意

这是一个实验性功能,目前正在开发中,尚未准备好用于通用用途。它将在未来的版本中以不可预测的、不兼容的方式进行更改。设置 allow_experimental_nlp_functions = 1 以启用它。

detectCharset

引入于:v22.2

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

语法

detectCharset(s)

参数

  • s — 要分析的文本。 String

返回值

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

示例

基本用法

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

detectLanguage

引入于:v22.2

检测 UTF8 编码输入字符串的语言。该函数使用 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 返回一个 Map,其中包含 2 个字母的语言代码,映射到文本中该语言的百分比。

语法

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 函数适用于非 UTF8 编码的字符串。如果您的字符集是 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

确定所提供文本数据的情感。

限制

目前,此函数受到其形式的限制,因为它使用了嵌入的情感词典,并且仅适用于俄语。

语法

detectTonality(s)

参数

  • s — 要分析的文本。 String

返回值

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

示例

俄语情感分析

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

lemmatize

引入于: v21.9

对给定的单词执行词形还原。此函数需要字典才能运行,可以从 github 获取。有关从本地文件加载字典的更多详细信息,请参阅页面 “定义字典”

语法

lemmatize(lang, word)

参数

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

返回值

返回单词的词形还原形式 String

示例

英语词形还原

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

stem

引入于: v21.9

对给定的单词执行词干提取。

语法

stem(lang, word)

参数

  • lang — 将应用规则的语言。使用两个字母的 ISO 639-1 代码。 String
  • word — 需要进行词干提取的小写单词。 String

返回值

返回单词的词干提取形式 String

示例

英语词干提取

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

查找给定单词的同义词。

有两种类型的同义词扩展

  • 普通
  • wordnet

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

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

语法

synonyms(ext_name, word)

参数

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

返回值

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

示例

查找同义词

SELECT synonyms('list', 'important')
['important','big','critical','crucial']
    © . This site is unofficial and not affiliated with ClickHouse, Inc.