メインコンテンツまでスキップ
メインコンテンツまでスキップ

自然言語処理 (NLP) 関数

Experimental feature. Learn more.
Not supported in 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 は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関数は非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 — 適用されるルールの言語。2文字の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

与えられた単語の同義語を見つけます。

同義語拡張には2種類があります:

  • plain
  • wordnet

plain 拡張タイプでは、各行が特定の同義語セットに対応するシンプルなテキストファイルへのパスを提供する必要があります。 この行の単語はスペースまたはタブ文字で区切る必要があります。

wordnet 拡張タイプでは、WordNetシソーブを含むディレクトリへのパスを提供する必要があります。 シソーブはWordNet感覚インデックスを含む必要があります。

構文

synonyms(ext_name, word)

引数

  • ext_name — 検索が行われる拡張の名前。 String
  • word — 拡張内で検索される単語。 String

戻り値

与えられた単語の同義語の配列を返します。 Array(String)

同義語を見つける

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