Nvtext N元语法#

NGrams

函数

std::unique_ptr<cudf::column> generate_ngrams(cudf::strings_column_view const &input, cudf::size_type ngrams, cudf::string_scalar const &separator, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过从字符串列生成 n元语法返回单个字符串列。

n元语法是由2个或更多字符串通过分隔符组成的分组。例如,生成 bigram(二元语法)会将所有相邻的字符串对分组。

["a", "bb", "ccc"] would generate bigrams as ["a_bb", "bb_ccc"]
and trigrams as ["a_bb_ccc"]

输出列的大小将等于从输入字符串列生成的 n元语法的总数。

所有 null 行条目都将被忽略,输出包含所有有效行。

抛出:
参数:
  • input – 用于分词并从中生成 n元语法的字符串列

  • ngrams – 要生成的 n元语法数量

  • separator – 用于分隔 n元语法 token 的字符串

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

新的 n元语法字符串列

std::unique_ptr<cudf::column> generate_character_ngrams(cudf::strings_column_view const &input, cudf::size_type ngrams = 2, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

在每个字符串内生成字符 n元语法。

字符串中的每个字符用于构建输出行的 n元语法。n元语法不会跨字符串创建。

["ab", "cde", "fgh"] would generate bigrams as
[["ab"], ["cd", "de"], ["fg", "gh"]]

所有 null 行条目都将被忽略,相应的输出行将为空。

抛出:
  • std::invalid_argument – 如果 ngrams < 2

  • cudf::logic_error – 如果字符数量不足以生成任何 n元语法

参数:
  • input – 从中生成 n元语法的字符串列

  • ngrams – 要生成的 n元语法数量。默认值为 2 = bigram(二元语法)。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

字符串的 Lists 列

std::unique_ptr<cudf::column> hash_character_ngrams(cudf::strings_column_view const &input, cudf::size_type ngrams = 5, uint32_t seed = 0, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对每个字符串内的字符 n元语法进行哈希计算。

字符串中的每个字符用于构建 n元语法,并且 n元语法不会跨相邻字符串行生成。

"abcdefg" would generate ngrams=5 as ["abcde", "bcdef" "cdefg"]

对每个字符串的 n元语法进行哈希计算,并在 lists 列中返回,其中偏移量指定每个字符串的哈希值行。

子列的大小将等于从输入字符串列生成的 n元语法的总数。

所有 null 行条目都将被忽略,输出包含所有有效行。

哈希算法对每个 n元语法使用 MurmurHash32。

抛出:
参数:
  • input – 从中生成 n元语法的字符串列

  • ngrams – 要生成的 n元语法数量。默认值为 5。

  • seed – 用于哈希算法的种子值。默认值为 0。

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源。

返回:

一个包含哈希值的 lists 列

std::unique_ptr<cudf::column> ngrams_tokenize(cudf::strings_column_view const &input, cudf::size_type ngrams, cudf::string_scalar const &delimiter, cudf::string_scalar const &separator, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过对输入字符串列进行分词,然后生成每个字符串的 n元语法,返回单个字符串列。

n元语法是由2个或更多 token 通过分隔符组成的分组。例如,生成 bigram(二元语法)会将一个字符串的所有相邻 token 对分组。

["a bb ccc"] can be tokenized to ["a", "bb", "ccc"]
bigrams would generate ["a_bb", "bb_ccc"] and trigrams would generate ["a_bb_ccc"]

使用 delimiter 进行分词,它可以是零个或多个字符。如果 delimiter 为空,则使用空白字符(字符码点 <= ‘ ‘)来识别 token。

识别 token 后,通过使用指定的分隔符连接 token 来生成 n元语法。生成的 n元语法使用每个字符串中的 token,而不是跨相邻行的字符串。任何包含的 token 数量少于指定 ngrams 值的输入字符串都将被跳过,不会贡献到输出中。因此,单个 token 的 bigram(二元语法)以及 2个或更少 token 的 trigram(三元语法)都将被忽略。

通过从每个字符串的开头查找分隔符来找到 token。对每个字符串进行分词时,使用输入列的行顺序来生成 n元语法以构建输出列。也就是说,在输入行 [i] 中创建的 n元语法将直接放置在输出列中输入行 [i+1] 中创建的 n元语法之前。

输出列的大小将等于从输入字符串列生成的 n元语法的总数。

Example:
s = ["a b c", "d e", "f g h i", "j"]
t = ngrams_tokenize(s, 2, " ", "_")
t is now ["a_b", "b_c", "d_e", "f_g", "g_h", "h_i"]

所有 null 行条目都将被忽略,输出包含所有有效行。

参数:
  • input – 用于分词并从中生成 n元语法的字符串列

  • ngrams – 要生成的 n元语法数量

  • delimiter – 用于将每个字符串分隔成 token 的 UTF-8 字符。空字符串将使用空白字符分隔 token。

  • separator – 用于分隔 n元语法 token 的字符串

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

新的 n元语法字符串列