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

pattern分词器是否支持多语言?非英文文本无分词结果问题问询

问题原因与解决方案

为什么俄语文本返回空tokens?

pattern分词器默认使用的正则表达式是\W+,这个规则里的“单词字符”\w仅包含拉丁字母(A-Za-z)、数字(0-9)和下划线,俄文的西里尔字母不在这个范围内,会被判定为非单词字符。当整个文本都被匹配成分隔符时,自然输出空的tokens数组。

解决方法:自定义pattern分词器

你需要修改pattern的正则规则,让它识别Unicode范围内的字母(包括西里尔字母)。可以用Unicode属性定义分隔符,比如匹配非字母字符作为分隔符:

  1. 创建包含自定义pattern分词器的索引:
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "unicode_pattern_analyzer": {
          "type": "pattern",
          "pattern": "\\P{L}+",  // 匹配任意非Unicode字母的字符作为分隔符
          "lowercase": true      // 可选:将分词结果转为小写
        }
      }
    }
  }
}
  1. 测试俄语文本分词:
POST /my_index/_analyze
{
  "analyzer": "unicode_pattern_analyzer",
  "text": "БЫСТРЫХ бурых лисицы."
}

返回的有效tokens如下:

{
  "tokens": [
    { "token": "быстрых", "start_offset": 0, "end_offset": 7, "type": "word", "position": 0 },
    { "token": "бурых", "start_offset": 8, "end_offset": 13, "type": "word", "position": 1 },
    { "token": "лисицы", "start_offset": 14, "end_offset": 21, "type": "word", "position": 2 }
  ]
}

补充说明

如果需要同时保留数字和下划线作为单词部分,可将正则修改为[^\\p{L}\\p{N}_]+。默认的pattern分词器是针对拉丁字母场景设计的,要适配其他语言必须自定义正则规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:16:03