SENTENCES

功能概述

把一段自然语言文本切分为句子,再把每个句子切分为单词,返回二维数组

ARRAY<ARRAY<STRING>>
ARRAY<ARRAY<STRING>>
。标点符号会被去掉。适合做词频统计、关键词抽取等文本分析的预处理;只需按固定分隔符切分字符串时,用 SPLIT 更直接。

语法

SENTENCES(<str> [, <lang> [, <country>]])

参数说明

  • <str>
    <str>
    :STRING 类型,要切分的文本。为 NULL 时返回 NULL。
  • <lang>
    <lang>
    :可选,STRING 类型,语言代码,如
    'en'
    'en'
    、
    'zh'
    'zh'
    。用于选择断句和分词规则。为 NULL 时按默认规则处理。
  • <country>
    <country>
    :可选,STRING 类型,国家或地区代码,如
    'US'
    'US'
    、
    'CN'
    'CN'
    ,与
    <lang>
    <lang>
    组合成区域设置。为 NULL 时忽略。

使用示例

切分英文文本:

SELECT sentences('Hi there! Good morning.');

[["Hi","there"],["Good","morning"]]

指定中文区域设置切分中文文本:

SELECT sentences('你好,世界!再见。', 'zh', 'CN');

[["你好","世界"],["再见"]]

按行处理不同语言的文本:

SELECT lang, country, sentences(text, lang, country) AS words FROM VALUES ('Hi there!', 'en', 'US'), ('你好,世界!', 'zh', 'CN') AS t(text, lang, country);

langcountrywords
enUS[["Hi","there"]]
zhCN[["你好","世界"]]

结合

EXPLODE
EXPLODE
展开单词,统计词频:

SELECT word, count(*) AS cnt FROM ( SELECT explode(flatten(sentences('Good morning. Good night.'))) AS word ) GROUP BY word ORDER BY cnt DESC, word;

wordcnt
Good2
morning1
night1

注意事项

  • 返回结果中不包含标点符号。
  • <lang>
    <lang>
    、
    <country>
    <country>
    为 NULL 时不会导致结果为 NULL,只有
    <str>
    <str>
    为 NULL 时才返回 NULL。

相关文档

  • SPLIT:按分隔符切分字符串
  • FLATTEN:把二维数组展平为一维
  • EXPLODE:把数组展开为多行
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询