印度语系归一化过滤器(Indic Normalization)

印度语系归一化过滤器 #

indic_normalization 词元过滤器对印度语系(Indic)文本进行 Unicode 归一化,统一各印度语系脚本中字符的多种表示形式。它是孟加拉语、印地语等语言归一化的基础层。

归一化规则 #

处理说明
Unicode 分解与合成将组合字符序列转为标准的预组合形式(NFC 归一化)
零宽字符清理移除零宽连接符(ZWJ)和零宽非连接符(ZWNJ)
Nukta 统一将 base + nukta 两码点序列合并为等价的单码点字符
变体编码统一统一不同 Unicode 编码表示的相同字符

使用示例 #

PUT my-indic-index
{
  "settings": {
    "analysis": {
      "filter": {
        "indic_norm": {
          "type": "indic_normalization"
        }
      },
      "analyzer": {
        "my_indic": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "indic_norm"]
        }
      }
    }
  }
}

测试效果 #

GET /_analyze
{
  "tokenizer": "standard",
  "filter": ["indic_normalization"],
  "text": "हिन्दी"
}

参数 #

此过滤器不接受任何参数。

使用建议 #

indic_normalization 通常作为语言专用归一化的前置步骤,与语言专用过滤器配合使用:

组合分析链
孟加拉语indic_normalizationbengali_normalization
印地语indic_normalizationhindi_normalization

典型分析链顺序:

standard 分词器 → lowercasedecimal_digitindic_normalization → 语言专用归一化 → stopstemmer