Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

自然言語処理 (NLP) 関数

detectCharset

導入バージョン: v22.2.0

実験的な機能
ClickHouse Cloud ではサポートされていません

UTF-8 以外でエンコードされた入力文字列の文字セットを検出します。

構文

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

実験的な機能
ClickHouse Cloud ではサポートされていません

UTF-8 でエンコードされた入力文字列の言語を検出します。 この関数は検出に 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

導入バージョン: v22.2.0

実験的な機能
ClickHouse Cloud ではサポートされていません

detectLanguage 関数と似ていますが、detectLanguageMixed は、テキスト内で各言語が占める割合を、2 文字の言語コードをキーとする Map として返します。

構文

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

実験的な機能
ClickHouse Cloud ではサポートされていません

detectLanguage 関数と似ていますが、detectLanguageUnknown 関数は UTF-8 以外でエンコードされた文字列を扱える点が異なります。 文字セットが 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

実験的な機能
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

実験的な機能
ClickHouse Cloud ではサポートされていません

指定した単語に対してレンマ化を行います。 この関数を使用するには辞書が必要です。辞書は github から取得できます。 ローカルファイルから辞書を読み込む方法の詳細については、"Dictionary の定義" ページを参照してください。

構文

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)) を受け付けます。String or FixedString or Array(String) or Array(FixedString)
  • language — ステミング規則を適用する言語。正規の Identifier は system.stemmers に一覧表示されています (例: 'english'、'german'、'porter')。Snowball は、定義されている場合、別名として 2 文字または 3 文字の ISO 639 コード (例: 'en'、'eng') も受け付けますが、対応範囲は言語によって異なります。移植性のため、system.stemmers の名前を優先してください。String

戻り値

単語のステミング後の形式 (String) 、またはステミング後の単語の配列 (Array(String)) 。String or Array(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

実験的な機能
ClickHouse Cloud ではサポートされていません

指定した単語の同義語を見つけます。

同義語の拡張機能には 2 種類あります。

  • plain
  • wordnet

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

wordnet 拡張機能タイプでは、WordNet シソーラスを含むディレクトリへのパスを指定する必要があります。 シソーラスには WordNet の sense index が含まれている必要があります。

構文

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