CJK 二元分词过滤器
cjk_bigram
分词过滤器专为处理东亚语言(如中文、日语和韩语 (CJK))而设计,这些语言通常不使用空格来分隔单词。二元分词是令牌字符串中两个相邻元素的序列,可以是字符或单词。对于 CJK 语言,二元分词有助于近似词边界并捕获能传达重要含义的字符对。
参数
cjk_bigram
分词过滤器可以通过两个参数进行配置:ignore_scripts
和 output_unigrams
。
ignore_scripts
cjk-bigram
分词过滤器会忽略所有非 CJK 脚本(如拉丁文或西里尔文等书写系统),并且仅将 CJK 文本分词为二元分词。使用此选项可指定要忽略的 CJK 脚本。此选项接受以下有效值:
-
han
:han
脚本处理汉字。汉字是中国、日本和韩国书面语中使用的语素文字。此过滤器有助于处理用中文、日文汉字或韩文汉字编写的文本的分词、规范化或词干提取等文本处理任务。 -
hangul
:hangul
脚本处理韩文字符,这些字符是韩语所独有的,在其他东亚脚本中不存在。 -
hiragana
:hiragana
脚本处理平假名,这是日语书写系统中使用的两种音节文字之一。平假名通常用于本地日语单词、语法元素和某些形式的标点符号。 -
katakana
:katakana
脚本处理片假名,这是另一种日语音节文字。片假名主要用于外来词、拟声词、科学名称和某些日语单词。
output_unigrams
此选项设置为 true
时,会同时输出一元分词(单个字符)和二元分词。默认值为 false
。
示例
以下示例请求创建一个名为 devanagari_example_index
的新索引,并定义一个分析器,其中包含 cjk_bigram_filter
过滤器,以及设置为 katakana
的 ignored_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
}
]
}