# Customnormalize — MindSpore Signal+ 使用手册 alpha 文档

# Customnormalize

对输入字符串进行一系列自定义的文本标准化处理。

该算子按顺序执行以下操作： 1. 将所有大写字母转换为小写字母。 2. 去除字符串首尾的空白字符 (space, `\t`, `\n`, `\v`, `\f`, `\r`)。 3. 删除字符串中预定义的一组标点符号 (例如 `.*()\"`)。 4. 标准化缩写词，例如，将 `we 're` 转换为 `we're`。 5. 展开常见的英文缩写词 (例如, `n't` -> `` not``, `'ll` -> `` will``, `i'm` -> `i am` 等)。 6. 标准化问号和感叹号，例如合并连续的符号 (`!!!` -> `!`) 并在符号和单词之间添加空格 (`Hello?` -> `Hello ?`)。 7. 去除字符串首尾预定义的另一组字符 (例如 `[\\s,:;\\-&'\"]+`)。 8. 再次去除字符串首尾的空白字符。 9. 如果处理后的字符串长度超过300个字符，则将其截断为300个字符。 10. 在字符串首部添加前缀 `<S> ``，尾部添加后缀 `` <E>`。

输入：

  - str - 输入字符串的地址。

  - str_len - 输入字符串的长度。

  - tmp_str - 用于中间计算的临时缓冲区的地址，其大小应足以容纳处理过程中的字符串。

  - params - 一个 `long long` 类型的数组，其中每个元素是指向标准化操作所需的配置字符串或参数的指针。

  - core_mask - 核掩码 (仅共享存储版本需要)。

输出：

  - result - 存储标准化后字符串的输出缓冲区的地址。

  - result_len - 指向一个 `int` 变量的指针，用于存储结果字符串的长度。

支持平台：

  `FT78NE` `MT7004`

备注

- 该算子不区分数据类型

共享存储版本:

void customnormalize_s(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params, int core_mask)

C调用示例：

     1#include <stdio.h>
     2#include <string.h>
     3#include "customnormalize.h"
     4
     5int main() {
     6    char *str = (char *)0xA0000000;         // str in DDR
     7    char *result = (char *)0xB0000000;      // result in DDR
     8    char *tmp_str = (char *)0xC0000000;     // tmp_str in DDR
     9    int str_len = 50; // 假设长度
    10    int result_len = 0;
    11    long long params[20]; // 假设参数已填充
    12    int core_mask = 0xff;
    13
    14    customnormalize_s(str, str_len, result, &result_len, tmp_str, params, core_mask);
    15
    16    return 0;
    17}

私有存储版本:

void customnormalize_p(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params)

C调用示例：

     1#include <stdio.h>
     2#include <string.h>
     3#include "customnormalize.h"
     4
     5int main() {
     6    char *str = (char *)0x10000000;         // str in L2
     7    char *result = (char *)0x10001000;      // result in L2
     8    char *tmp_str = (char *)0x10002000;     // tmp_str in L2
     9    int str_len = 50; // 假设长度
    10    int result_len = 0;
    11    long long params[20]; // 假设参数已填充
    12
    13    customnormalize_p(str, str_len, result, &result_len, tmp_str, params);
    14
    15    return 0;
    16}