kuromoji_tokenizer

编辑

kuromoji_tokenizer 接受以下设置

mode

分词模式决定分词器如何处理复合词和未知词。它可以设置为

normal

正常分词,不分解复合词。示例输出

関西国際空港
アブラカダブラ
search

面向搜索的分词。这包括对长名词的分解过程,同时还将完整的复合词作为同义词。示例输出

関西, 関西国際空港, 国際, 空港
アブラカダブラ
extended

扩展模式输出未知词的单字。示例输出

関西, 関西国際空港, 国際, 空港
ア, ブ, ラ, カ, ダ, ブ, ラ
discard_punctuation
是否从输出中丢弃标点符号。默认为 true
lenient
是否应该在提供的 text 上对 user_dictionary 进行重复数据删除。默认为 False,导致重复项生成错误。
user_dictionary

Kuromoji 分词器默认使用 MeCab-IPADIC 词典。可以将 user_dictionary 附加到默认词典。该词典应具有以下 CSV 格式

<text>,<token 1> ... <token n>,<reading 1> ... <reading n>,<part-of-speech tag>

为了演示如何使用用户词典,请将以下词典保存到 $ES_HOME/config/userdict_ja.txt

東京スカイツリー,東京 スカイツリー,トウキョウ スカイツリー,カスタム名詞

您还可以使用 user_dictionary_rules 选项将规则直接内联到分词器定义中

PUT kuromoji_sample
{
  "settings": {
    "index": {
      "analysis": {
        "tokenizer": {
          "kuromoji_user_dict": {
            "type": "kuromoji_tokenizer",
            "mode": "extended",
            "user_dictionary_rules": ["東京スカイツリー,東京 スカイツリー,トウキョウ スカイツリー,カスタム名詞"]
          }
        },
        "analyzer": {
          "my_analyzer": {
            "type": "custom",
            "tokenizer": "kuromoji_user_dict"
          }
        }
      }
    }
  }
}
nbest_cost/nbest_examples

额外的专家用户参数 nbest_costnbest_examples 可用于包含根据统计模型最有可能的其他词元。如果同时使用这两个参数,则应用两者的最大值。

nbest_cost
nbest_cost 参数指定额外的 Viterbi 成本。 KuromojiTokenizer 将包含 Viterbi 路径中所有在最佳路径的 nbest_cost 值范围内的词元。
nbest_examples
nbest_examples 可用于根据示例查找 nbest_cost 值。 例如,值 /箱根山-箱根/成田空港-成田/ 表示在文本中,对于 箱根山(箱根山)和 成田空港(成田机场),我们希望得到一个成本,该成本使我们得到 箱根(箱根)和 成田(成田)。

然后按如下方式创建一个分析器

PUT kuromoji_sample
{
  "settings": {
    "index": {
      "analysis": {
        "tokenizer": {
          "kuromoji_user_dict": {
            "type": "kuromoji_tokenizer",
            "mode": "extended",
            "discard_punctuation": "false",
            "user_dictionary": "userdict_ja.txt",
            "lenient": "true"
          }
        },
        "analyzer": {
          "my_analyzer": {
            "type": "custom",
            "tokenizer": "kuromoji_user_dict"
          }
        }
      }
    }
  }
}

GET kuromoji_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "東京スカイツリー"
}

上面的 analyze 请求返回以下内容

{
  "tokens" : [ {
    "token" : "東京",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 0
  }, {
    "token" : "スカイツリー",
    "start_offset" : 2,
    "end_offset" : 8,
    "type" : "word",
    "position" : 1
  } ]
}
discard_compound_token

是否应该在 search 模式下从输出中丢弃原始复合词元。 默认为 false。 使用 searchextended 模式以及此选项 true 的示例输出

関西, 国際, 空港

如果文本包含全角字符,则 kuromoji_tokenizer 分词器可能会产生意外的词元。 为了避免这种情况,请将 icu_normalizer 字符过滤器 添加到您的分析器。 请参阅 规范化全角字符