Link Search Menu Expand Document Documentation Menu

CJK 二元分词过滤器

cjk_bigram 分词过滤器专为处理东亚语言(如中文、日语和韩语 (CJK))而设计,这些语言通常不使用空格来分隔单词。二元分词是令牌字符串中两个相邻元素的序列,可以是字符或单词。对于 CJK 语言,二元分词有助于近似词边界并捕获能传达重要含义的字符对。

参数

cjk_bigram 分词过滤器可以通过两个参数进行配置:ignore_scriptsoutput_unigrams

ignore_scripts

cjk-bigram 分词过滤器会忽略所有非 CJK 脚本(如拉丁文或西里尔文等书写系统),并且仅将 CJK 文本分词为二元分词。使用此选项可指定要忽略的 CJK 脚本。此选项接受以下有效值:

  • hanhan 脚本处理汉字。汉字是中国、日本和韩国书面语中使用的语素文字。此过滤器有助于处理用中文、日文汉字或韩文汉字编写的文本的分词、规范化或词干提取等文本处理任务。

  • hangulhangul 脚本处理韩文字符,这些字符是韩语所独有的,在其他东亚脚本中不存在。

  • hiraganahiragana 脚本处理平假名,这是日语书写系统中使用的两种音节文字之一。平假名通常用于本地日语单词、语法元素和某些形式的标点符号。

  • katakanakatakana 脚本处理片假名,这是另一种日语音节文字。片假名主要用于外来词、拟声词、科学名称和某些日语单词。

output_unigrams

此选项设置为 true 时,会同时输出一元分词(单个字符)和二元分词。默认值为 false

示例

以下示例请求创建一个名为 devanagari_example_index 的新索引,并定义一个分析器,其中包含 cjk_bigram_filter 过滤器,以及设置为 katakanaignored_scripts 参数:

PUT /cjk_bigram_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "cjk_bigrams_no_katakana": {
          "tokenizer": "standard",
          "filter": [ "cjk_bigrams_no_katakana_filter" ]
        }
      },
      "filter": {
        "cjk_bigrams_no_katakana_filter": {
          "type": "cjk_bigram",
          "ignored_scripts": [
            "katakana"
          ],
          "output_unigrams": true
        }
      }
    }
  }
}

生成的词元

使用以下请求检查使用该分析器生成的词元

POST /cjk_bigram_example/_analyze
{
  "analyzer": "cjk_bigrams_no_katakana",
  "text": "東京タワーに行く"
}

示例文本:“東京タワーに行く”

東京 (Kanji for "Tokyo")
タワー (Katakana for "Tower")
に行く (Hiragana and Kanji for "go to")

响应包含生成的词元

{
  "tokens": [
    {
      "token": "東",
      "start_offset": 0,
      "end_offset": 1,
      "type": "<SINGLE>",
      "position": 0
    },
    {
      "token": "東京",
      "start_offset": 0,
      "end_offset": 2,
      "type": "<DOUBLE>",
      "position": 0,
      "positionLength": 2
    },
    {
      "token": "京",
      "start_offset": 1,
      "end_offset": 2,
      "type": "<SINGLE>",
      "position": 1
    },
    {
      "token": "タワー",
      "start_offset": 2,
      "end_offset": 5,
      "type": "<KATAKANA>",
      "position": 2
    },
    {
      "token": "に",
      "start_offset": 5,
      "end_offset": 6,
      "type": "<SINGLE>",
      "position": 3
    },
    {
      "token": "に行",
      "start_offset": 5,
      "end_offset": 7,
      "type": "<DOUBLE>",
      "position": 3,
      "positionLength": 2
    },
    {
      "token": "行",
      "start_offset": 6,
      "end_offset": 7,
      "type": "<SINGLE>",
      "position": 4
    },
    {
      "token": "行く",
      "start_offset": 6,
      "end_offset": 8,
      "type": "<DOUBLE>",
      "position": 4,
      "positionLength": 2
    },
    {
      "token": "く",
      "start_offset": 7,
      "end_offset": 8,
      "type": "<SINGLE>",
      "position": 5
    }
  ]
}
剩余 350 字符

有问题?

想要贡献?