You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch泰语分词器中保留标点符号

解决Elasticsearch 7.17.1泰语文本分词保留标点的问题

你的问题核心在于**thai分词器本身会在分词阶段直接丢弃标点符号**,所以后续添加的pattern_capture过滤器根本接触不到这些标点,自然无法将其转为独立token。以下是两种无需自定义插件的可行方案:

方案一:使用官方ICU分词器(推荐)

ICU分词器是Elasticsearch官方维护的插件(需单独安装,不属于自定义插件范畴),它原生支持泰语分词,同时会将标点符号保留为独立token。

索引配置

{
  "settings": {
    "analysis": {
      "analyzer": {
        "thai_with_punctuation": {
          "tokenizer": "icu_tokenizer"
        }
      }
    }
  }
}

测试分析

POST /my_thai_index/_analyze
{
  "analyzer": "thai_with_punctuation",
  "text": "(เปิด) ไม่ เป็น??? ??lol."
}

返回结果会包含所有标点作为独立token(例如(、)、?、.等),同时泰语文本的分词结果也会正确保留。

方案二:无需额外插件的自定义分析器

如果不想安装ICU插件,可以通过字符过滤器先给标点前后添加空格,让thai分词器将标点识别为独立token:

索引配置

{
  "settings": {
    "analysis": {
      "char_filter": {
        "punctuation_spacer": {
          "type": "pattern_replace",
          "pattern": "(\\p{Punct})",
          "replacement": " $1 "
        }
      },
      "analyzer": {
        "thai_with_punctuation": {
          "char_filter": ["punctuation_spacer"],
          "tokenizer": "thai",
          "filter": ["trim"]
        }
      }
    }
  }
}

原理说明

通过pattern_replace字符过滤器给所有标点符号的前后添加空格,让thai分词器将被空格分隔的标点视为独立token保留,同时不影响泰语文本的正常分词。


内容的提问来源于stack exchange,提问作者Linux_cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:56:21